gpt4 book ai didi

javascript - NodeJS - 如何编写连接到 NodeJS 服务器并接收广播消息的客户端

转载 作者:太空宇宙 更新时间:2023-11-03 22:27:54 30 4
gpt4 key购买 nike

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

涉及的步骤是:

  1. 用户访问网址http://server.xyz.com:8080/pa
  2. nodeJS 服务器接收该调用并向连接的客户端广播 pa 是收到的 api 调用。
  3. 连接到服务器的nod​​eJS客户端调用一些与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 已用于所有主要 API,它们在 Slack 和 Microsoft 中极为流行。以下灵感来自于微软的Office 365 pushstreaming服务 API。

添加客户端可以 POST 的路由,我们称之为 /subscribe。在 /subscribe 路由的请求正文中,它们包含一个 url,我们将其称为 paReceiverUrl。

如果客户端希望在其他人向 /pa 端点发送消息时收到通知,则客户端可以向 /subscribe 端点发送请求并包含要通知的位置它们位于 - paReceiverUrl (以及任何其他信息,可能是一些身份验证数据)。为了安全起见,您应该将订阅的客户信息存储在非 volatile 存储中,让数据库为您执行此操作,或者只是将其写入文件,直到它变得更加复杂。

现在您的 '/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。

如果您需要更实时,那么我会使用 Web 套接字协议(protocol)来设置持久 HTTP 连接来传输数据。

关于javascript - NodeJS - 如何编写连接到 NodeJS 服务器并接收广播消息的客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42757846/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com