【问题标题】:NodeJS WebSocket goes straight to close after connection is openNodeJS WebSocket 在连接打开后直接关闭
【发布时间】:2020-01-06 01:10:07
【问题描述】:

这是我的 websocket 服务器端代码:

 wss = new WebSocketServer({
  server: server,
  path: '/chat'
 });

 console.log('Web Socket Server is created');
 wss.on('connection', function (ws, request) {
  console.log('Connection is called');
  … 
 });
 wss.on('message', function (message) {
  console.log('onMessage data: ' + message);
 });
 wss.on('close', function(code, reason) {
        console.log('ws is closed with code: ' + code + ' reason: '+ reason);
 });

这是我的 websocket 客户端代码:

ws = new WebSocket("ws://{{host}}/chat");
   ws.onopen = function () {
    // Web Socket is connected, send data using send()
    ws.send("Message to send");
    console.log("Websocket is open...");
   };
   ws.onmessage = function (evt) {
    var received_msg = evt.data;
    console.log("Message is received: " + received_msg);
   };
   ws.onclose = function () {
    // websocket is closed.
    console.log("Connection is closed...");
   };

我不明白为什么在浏览器中看到控制台输出时是:

[Log] Websocket is open... 
[Log] Connection is closed... 

打开后连接直接关闭。在服务器端我只看到 “连接被调用”输出。

我不明白为什么在客户端关闭连接,我不明白为什么当客户端关闭连接时,服务器端'关闭'事件没有被触发。

【问题讨论】:

  • 您使用的是哪个 websocket 服务器?是 'ws' 还是 'websocket' 包?

标签: node.js websocket


【解决方案1】:

您正在错误的目标上侦听事件“消息”、“关闭”。 创建连接后,您应该开始收听来自它的消息:

 wss = new WebSocketServer({
  server: server,
  path: '/chat'
 });

 console.log('Web Socket Server is created');
 wss.on('connection', function (ws, request) {
   console.log('Connection is called');
   ws.on('message', function (message) {
     console.log('onMessage data: ' + message);
   });
   wss.on('close', function(code, reason) {
     console.log('ws is closed with code: ' + code + ' reason: '+ reason);
   });
 });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-09
    • 2018-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多