NodeJS WebSocket 在连接打开后直接关闭

问题描述 投票:0回答:1

这是我的 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... 

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

我不明白为什么客户端关闭连接,也不明白为什么当客户端关闭连接时,服务器端“关闭”事件不会被触发。

node.js websocket
1个回答
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('open', function (message) {
     console.log('ws connection opened!');
   });
   ws.on('message', function (message) {
     console.log('onMessage data: ' + message);
   });
   ws.on('close', function(code, reason) {
     console.log('ws is closed with code: ' + code + ' reason: '+ reason);
   });
 });
© www.soinside.com 2019 - 2024. All rights reserved.