当前位置: 首页 > 知识库问答 >
问题:

Websocket-sockjs-InvalidStateError:尚未建立连接

东郭阳德
2023-03-14

使用跺脚时。js和sockjs,我可以很好地连接到Spring Boot后端。

在Angular5中使用stompjs和sockjs时,我不断遇到以下错误:

InvalidStateError:连接尚未建立

有解决办法吗?只是添加了sockjs。正如本文中提到的,min.js并没有起到任何作用。

详细日志如下:

设置连接/1主管道。3388a5e3a20e64e3bdb8。捆js:1设置连接/2主。3388a5e3a20e64e3bdb8。捆js:1将要订阅。。。主要的3388a5e3a20e64e3bdb8。捆js:1正在打开Web套接字。。。主要的3388a5e3a20e64e3bdb8。捆js:1

{"sender":"me","type":"JOIN"}main.3388a5e3a20e64e3bdb8.bundle.js: 1错误错误:未捕获(promise中):错误:InvalidState错误:连接尚未建立错误:InvalidState错误:连接尚未建立在r.send(<--phd--2/>: 1)

我的Angular代码(从Javascript翻译而来)是:

 let ws = new SockJS(this.serverUrl);
    this.stompClient = Stomp.over(ws);
    let that = this;
    console.log('Setting up connection/2');
    console.log('Going to subscribe ... ');
    this.stompClient.connect({}, function (frame) {
      console.log('Going to subscribe ... ');
      that.stompClient.subscribe('/topic/public', (payload) => {
          console.log('Subscribe: Incoming message: ' + payload.body);
          if (payload.body) {
            let message = JSON.parse(payload.body);
            if (message.sender === 'MyBot') {
              this.createAndAddChat('you', message.content);
            } else {
              this.createAndAddChat('me', message.content);
            }
            console.log('New message arrived: ' + payload.body);
          }
        },
        error => {
          console.log( 'Subscribe: error: ' + error)
        },
        () => {
         console.log( 'Subscribe, On complete')
        });
    });
    this.stompClient.send("/app/chat.addUser", {},
      JSON.stringify({sender: 'me', type: 'JOIN'})
    )

共有1个答案

费承载
2023-03-14

现在,在启动(!)后直接调用send方法异步get连接调用。那是错误的。

有2种解决方案:

  • 好:把发送调用放在get连接的异步体中。所以连接完成后,调用发送方法。
  • 不理想:等待一段时间来完成异步连接。
 类似资料:
  • STOMP 一种简单的消息传递协议,最初创建用于脚本语言,其框架受 HTTP 启发。 STOMP 得到广泛支持,心脏长连接一小时左右失去连接 失去到未定义的连接-建立连接后失去连接非常适合在 WebSocket 和 web 上使用。 SockJS SockJS是WebSocket技术的一种模拟,在表面上,它尽可能使用原生webSocket API,但是再底层非常智能,优先使用原生WebSocket,如果在不支持WebSocket的浏览器中,会自动降为轮询的方式。

  • 我正在尝试在服务器上实现基于GraphQLWebSocket的@订阅(使用NestJS@subscription)。服务器托管在AWS ECS上,位于ALB后面。我们目前通过VPC链接与ALB建立了AWS API GW连接。 我试图用我们在HTTP API GW中使用的相同的VPC链接构建一个专用的Websocket API GW。我还试图在我们的ECS上安装一个新的NLB(网络负载平衡器),并在

  • 问题内容: 我迷上了Firefox。我无法使Websocket正常工作。我使用TornadoWebsocket,并通过以下代码对其进行了初始化: 然后像这样在Javascript端初始化它: 这段代码在Chrome上运行良好,同时我自己创建了证书并在HTTPS下运行页面。但是Firefox一直在说: 我用谷歌搜索,发现了太多想法,但没有一个对我有用:( 任何帮助将不胜感激。 问题答案: 我通过Pr

  • 从。build/dist/bundle/programs/web.browser中的构建文件中 以下websocket请求将保持挂起状态为101 我没有在流星上写任何代码来运行它到https,我试图通过Nginx处理。添加ssl证书后,从angular尝试通过而不是连接到meteor 请在下面找到我的nginx文件。 任何线索都将不胜感激。

  • 我试图使用Python Twisted Authobhan websocket客户端打开客户端(每台机器有60K端口限制)的并发websocket连接。但是我无法使用下面的代码打开不超过20K的连接: 我在一个循环中使用了“reactor.connecttcp”,使用Twisted打开并发websocket连接是否正确? 让我知道。

  • 我的轨道环境是 轨道: 3.2.14, 红宝石: 1.9.3, 系统:ubuntu mysql:5.5.32-0ubuntu0.12.04.1 我创建了一个mysql数据库,为了测试这个数据库,我从我在windows中的mysql workbench连接它。所以,我想展示一下,我在ubuntu中的mysql数据库运行正常 但是,当我在浏览器中运行网站时,我得到错误:active record::c