为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

海绵宝宝撒 2021-06-30 09:06:29
我是一个应用程序,我想在其中保持心跳以检查我的浏览器是否已连接。所以为此我实现了一个网络套接字。我在后端使用 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 中刷新浏览器,它会在控制台中抛出异常。
查看完整描述

2 回答

?
侃侃尔雅

TA贡献1801条经验 获得超16个赞

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


查看完整回答
反对 回复 2021-07-14
?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

我认为这个错误没有用,我只是将其关闭。

要关闭 log to tomcat8-stderr.2021-07-08.log,请将日志级别更改为警告以进行控制台登录/conf/logging.properties

java.util.logging.ConsoleHandler.level = 警告

要关闭 log to catalina.2021-07-08.log,请添加一行/conf/logging.properties

org.apache.tomcat.websocket.server.WsRemoteEndpointImplServer.level = 警告


查看完整回答
反对 回复 2021-07-14
  • 2 回答
  • 0 关注
  • 148 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信