如何在 NodeJS 中显示 Websocket 对浏览器的响应

Posted

技术标签:

【中文标题】如何在 NodeJS 中显示 Websocket 对浏览器的响应【英文标题】:How To Display Websocket Response To Browser In NodeJS 【发布时间】:2020-04-20 07:21:16 【问题描述】:

我是 NodeJS 的新手。我的代码是

 const webSocket= require('ws');
const express = 
 require('express');
 const app=express();
   Var url = "wss://stream.binance.com:9443/BTCUSDT@trade`"
const ws = new webSocket(url);
  app.get('/',(req,res)=>
 ws.on('message',data=>
 res.send(data)
)
  )
app.listen(3000)

当我使用 console.log 而不是 res.send() 时,它可以成功运行并控制数据。

如何将这些动态数据显示到浏览器。提前致谢。

【问题讨论】:

您需要一个客户,请向我们展示您的客户代码。 是否有任何客户端代码.. 我是节点新手 您的意思是向上述文件发送请求? 我认为最好了解 WebSockets 的工作原理。在您的代码中,主要问题是如果调用“/”端点,您将获得消息侦听器。您的 api 和 websocket 不应相互依赖。对于 websocket,这是一个服务器,要向浏览器发送消息,您需要一个 websocket 客户端。 【参考方案1】:

Websocket 是事件驱动的

在服务器上发出事件的事件发射器的语法如下:

ws.emit('eventName',data);

接收消息的事件监听器的语法如下:

//For the client to receive the message, you should put something like this at the front end

ws.on('eventName',data=> 

const content = data;
 document.getElementById('chat').innerhtml += content

 );

Websocket 是不同于 HTTP 的协议。它使用 HTTP 建立连接。然后连接将升级到 websocket。到那时,您不应该再像 res.send() 那样使用 HTTP 发送数据,而是使用 ws.emit('eventName', data) 来发送数据。

Websocket Protocol

【讨论】:

感谢您的回复.. 但是如何在客户端的该页面上加载“ws”? 是的。您只需在前端包含 WebSocket CDN。您也可以选择在本地下载。

以上是关于如何在 NodeJS 中显示 Websocket 对浏览器的响应的主要内容,如果未能解决你的问题,请参考以下文章

如何在 nginx nodejs 服务器上配置“ws”websocket?

如何在NodeJS中代理websocket连接到其他websockets

如何搭建 websocket服务器

如何创建 nodejs websocket 客户端

如何从 C# WebSocket4net 调用服务器事件(nodejs socket.io)

在 NodeJS 中将 WebSocket 连接到 WebSocketServer