nodejs – 如何编写连接到nodeJS Server的客户端并接收广播消息

我有以下nodeJS服务器似乎正常工作。 我想编写一个客户端,从服务器接收消息,并根据消息调用一些JS。

涉及的步骤是:

  1. 用户访问URL http://server.xyz.com:8080/pa
  2. nodeJS服务器接收该呼叫并向所连接的客户端广播该pa是接收到的api呼叫。
  3. nodeJS连接到服务器的客户端调用与pa动作相关的一些JS。

我的问题是:

 1. How do I make sure the server broadcasts that message like Step 2? 2. How do I write a client that performs Step 3 above. 

对于客户端来说,我看到很多对socket.io的引用,但我不确定这种情况下最好的框架是什么。

server.js

 var http = require('http'); http.createServer(function(request, response) { request.on('error', function(err) { console.error(err); response.statusCode = 400; response.end(); }); response.on('error', function(err) { console.error(err); }); response.writeHead(200, {'Content-Type': 'application/json'}); var body=[]; if (request.method === 'GET' && request.url === '/pa') { response.end(JSON.stringify({"action": "pa"})); } else if (request.method === 'GET' && request.url === '/pi') { response.end(JSON.stringify({"action": "pi"})); } else { response.statusCode = 404; response.end(); } }).listen(8080); 

如果客户端也在Node.js中,那么你应该可以设置一个webhook / push服务。 Webhooks在今天的每个主streamAPI中都有使用,在Slack和Microsoft中非常stream行。 以下是受Microsoft的Office 365 推送和stream媒体服务API的启发。

添加客户端可以发送到的路由,让我们调用这个/subscribe 。 在/subscribe路由的请求体中,它们包含一个url,我们将其称为paReceiverUrl。

如果客户希望在别人发送/pa端点消息时得到通知,则客户端可以向/subscribe端点发送请求并包含位置以通知他们 – paReceiverUrl (以及任何其他信息,可能是一些authentication数据) 。 您应该将订阅客户的信息存储在非易失性存储器中以保证安全,有一个数据库可以为您执行此操作,或者直接将其写入文件,直至变得更复杂。

现在你的'/pa'路线变得更像这样(你的第2步):

 if (request.method === 'GET' && request.url === '/pa') { // Send response to the request sender response.end(JSON.stringify({"action": "pa"})); // Get subscribed clients' information var subscribedClients = <Read from file or db> // Broadcast for(var i = 0; i < subscribedClientsUrls.length; i++) { // Send them a request at subscribedClients[i].paReceiverUrl } } 

现在你的第3步,客户端只需要在他们的paReceiverUrl接受他们的服务器请求,在那里他们可以调用任何他们想要的JS。

如果你需要它更实时,那么我会去与networking套接字协议设置一个持久的HTTP连接stream数据。