npm 'websocket' 服务器向客户端发送消息

Posted

技术标签:

【中文标题】npm \'websocket\' 服务器向客户端发送消息【英文标题】:npm 'websocket' server send message to clientnpm 'websocket' 服务器向客户端发送消息 【发布时间】:2018-10-25 12:38:49 【问题描述】:

在我继承的代码中使用了this websocket。我阅读了文档并进行了大量谷歌搜索,以找到 websocketServer 如何向客户端(浏览器)发出消息。这是一个代码sn-p:

    var wsServer = new WebSocketServer(
        httpServer: server,
        autoAcceptConnections: false,
        path:"/async" //This attribute is not in the documentation
    );

  wsServer.on('request', function(request) 
    var connection = request.accept('relay_protocol', request.origin);
    connection.on('message', function(message) 
       ....
       );
     );

我找不到connection 对象的文档。它有什么特性?

最后,使用什么方法将消息发送回客户端?

总的来说,为这个模块提供的信息很差。请帮忙。

【问题讨论】:

【参考方案1】:

此模块的完整文档是here。

来自他们的示例(服务器):

connection.on('message', function(message) 
    if (message.type === 'utf8') 
        console.log('Received Message: ' + message.utf8Data);
        connection.sendUTF(message.utf8Data);
    
    else if (message.type === 'binary') 
        console.log('Received Binary Message of ' + message.binaryData.length + ' bytes');
        connection.sendBytes(message.binaryData);
    
);

所以这两个都向客户端发送消息:

connection.sendUTF(message.utf8Data);

connection.sendBytes(message.binaryData);

我希望这会有所帮助!

提示:试用socket.io 模块。

【讨论】:

当我使用 socket.io 并将 websocket 使用的同一台服务器传递给它的配置时,它会阻止 websocket 本身。我不知道为什么。 Socket.IO 尽可能使用长轮询和 websocket。要仅使用 websocket,请添加以下配置:传输:['websocket']。更多:socket.io/docs/server-api

以上是关于npm 'websocket' 服务器向客户端发送消息的主要内容,如果未能解决你的问题,请参考以下文章

无法通过 websocket 从服务器向客户端发送数据

通过 websocket 继续向客户端发送数据

WebSocket 服务器:向客户端发送文本帧

客户端向 websocket 服务器发送消息时的编码类型是啥?

websocket——通信梳理(短轮询、长轮询、socket、websocket、socket.io)

通过 Websockets 从 Python Flask 服务器连续向客户端发送数据