在 tomcat 中关闭浏览器时刷新时在 tomcat 控制台中抛出错误

我是一个应用程序,我想在其中保持心跳以检查我的浏览器是否已连接。所以为此我实现了一个网络套接字。我在后端使用 java,在前端使用 angular 5。


我的代码片段java


    @ServerEndpoint(value = "/endpoint", configurator = HttpSessionConfigurator.class)

    public class WebServer {

      @OnOpen

  public void onOpen(Session session, EndpointConfig config) {

    log.debug("on open session: "+ session.getId());

    this.httpSession = (HttpSession) config.getUserProperties().get(IBClientConstants.HTTP_SESSION);

  }


  @OnClose

  public void onClose(Session session) { 

    log.debug("onClose session: "+ session.getId());

  }


  @OnMessage

  public void onMessage(String message, Session session) {

    String data = "success";//i send some data which is needed in UI

    session.getBasicRemote().sendText(data);

  }


  @OnError

  public void onError(Throwable t) {

    log.debug(t.getMessage());

  }

    }

我的角边代码:


@Injectable()

export class WebSocketClient {

    private webSocket;


    private websocketUrl;


    constructor(private appConfig: AppConfig) {

        this.websocketUrl = appConfig.getBaseURLWithContextPath();

        if (this.websocketUrl) {

            this.websocketUrl = this.websocketUrl.replace("http", "ws") + "/endpoint"

        }

        this.webSocket = new WebSocket(this.websocketUrl);      

    }


    connect() {

        try {

            this.webSocket.onopen = (event) => {

                console.log('onopen::' + JSON.stringify(event, null, 4));

            }

            this.webSocket.onmessage = (event) => {

                var response = event.data;

                let jsonData = JSON.parse(response);

                //i use this data

            }


所有功能都运行良好。但是当我使用 https 连接时,这意味着我的 websocket url 变为 wss://localhost:8443/InBetween/endpoint。此时,如果我在 chrome 中刷新浏览器,它会在控制台中抛出异常。


海绵宝宝撒
浏览 149回答 2
2回答

侃侃尔雅

问题是因为网络套接字没有正确断开连接。我this.webSocket = new WebSocket(this.websocketUrl); 从构造函数中删除并添加了一个单独的函数来连接并在需要连接到网络套接字的地方使用它。在浏览器刷新和关闭时也称为断开连接功能。

慕桂英4014372

我认为这个错误没有用,我只是将其关闭。要关闭 log to tomcat8-stderr.2021-07-08.log,请将日志级别更改为警告以进行控制台登录/conf/logging.propertiesjava.util.logging.ConsoleHandler.level = 警告要关闭 log to catalina.2021-07-08.log,请添加一行/conf/logging.propertiesorg.apache.tomcat.websocket.server.WsRemoteEndpointImplServer.level = 警告
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java