Node.js 节点WebSocket广播不工作

Node.js 节点WebSocket广播不工作,node.js,websocket,Node.js,Websocket,目前,我在Node中启动了一个超级简单的websocket设置,但“Broadcast”似乎无法正常工作,这是一个问题。这是我第一次使用websockets,所以我可能遗漏了一些非常明显的东西,但在网上查找了一段时间后,我无法找到解决方案 基本上,我只是尝试将一些json推出到所有当前连接的客户端 我可以确认该套接字正在工作,因为当我在ws://localhost:3000上连接时,我可以在“connection”块中看到“ws.send”上的静态连接字符串,并且如果我连接多个客户端,可以看到多

目前,我在Node中启动了一个超级简单的websocket设置,但“Broadcast”似乎无法正常工作,这是一个问题。这是我第一次使用websockets,所以我可能遗漏了一些非常明显的东西,但在网上查找了一段时间后,我无法找到解决方案

基本上,我只是尝试将一些json推出到所有当前连接的客户端

我可以确认该套接字正在工作,因为当我在ws://localhost:3000上连接时,我可以在“connection”块中看到“ws.send”上的静态连接字符串,并且如果我连接多个客户端,可以看到多个客户端从广播方法注销

对于我可能缺少的任何帮助,我们将不胜感激

var WebSocketServer = require('uws').Server;
var wss = new WebSocketServer({ port: 3000 }); // ws://localhost:3000

// Static test var
var test_message = {
    'test': 'Response',
    'test2': 'Response2'
};

// Broadcast to all.
wss.broadcast = function broadcast(data) {
  wss.clients.forEach(function each(client) {
    console.log('IT IS GETTING INSIDE CLIENTS');
    console.log(client);

    // The data is coming in correctly
    console.log(data);
    client.send(data);
  });
};

wss.on('connection', function(ws) {
   ws.on('message', function(message) {
     wss.broadcast(test_message);
     console.log('Received: ' + message);
   });

   // TODO This is static just to check that the connection is properly working
   ws.send('You successfully connected to the websocket.');
});

我使用
智能Websocket客户端测试了您的代码。你的代码很好。如果您广播的数据只有
字符串,那么您可以在UI中看到回复,但是对于
javascript
对象
,客户端不会显示,尽管您可以在
Chrome开发者工具
中看到响应为
二进制帧(操作码=2)

此行为背后的原因是
ws.send()
方法支持普通字符串、类型化数组或blob,但发送类型化数组和blob将导致客户端接收的帧作为二进制帧(操作码=2)

您可以尝试
JSON.stringify
对象

wss.on('connection', function(ws) {
   ws.on('message', function(message) {
     wss.broadcast(JSON.stringify(test_message));
     console.log('Received: ' + message);
   });

   ws.send('You successfully connected to the websocket.');
});

在我的情况下,它似乎起了作用。你能分享客户端代码吗?现在我只是使用chrome扩展来测试套接字,我没有编写客户端。我使用的扩展名为“SmartWebSocket客户端”,无法看到广播将消息推送到该客户端的响应部分。谢谢你的帮助!啊,好吧,这是有道理的。非常感谢您的帮助,这很有意义,为什么我可以在控制台日志中看到对象,但不能在UI中的广播中看到。