Tôi có máy chủ nodeJS sau và nó có vẻ hoạt động tốt. Tôi muốn viết một ứng dụng khách nhận tin nhắn từ máy chủ và gọi một số JS dựa trên tin nhắn.
Các bước liên quan là:
- URL truy cập của người dùng
http://server.xyz.com:8080/pa
- Máy chủ nodeJS nhận cuộc gọi và truyền nó đến các máy khách được kết nối
pa
cuộc gọi api đã được nhận chưa.
- Máy khách nodeJS được kết nối với máy chủ gọi một cái gì đó bằng
pa
JS liên quan đến hoạt động.
我的问题是:
1. Làm cách nào để đảm bảo máy chủ phát thông báo đó như Bước 2?
2. Làm cách nào để viết một ứng dụng khách thực hiện Bước 3 ở trên.
Đối với khách hàng, tôi thấy rất nhiều tài liệu tham khảo về socket.io, nhưng tôi không chắc đâu là framework tốt nhất trong trường hợp này.
máy chủ.js
var http = require('http');
http.createServer(function(request, reply) {
request.on('error', function(err) {
console.error(err);
phản hồi.statusCode = 400;
phản hồi.end();
});
reply.on('error', function(err) {
console.error(err);
});
reply.writeHead(200, {'Content-Type': 'application/json'});
var body=[];
if (request.method === 'GET' && request.url === '/pa') {
reply.end(JSON.stringify({"action": "pa"}));
}
khác nếu (request.method === 'GET' && request.url === '/pi') {
reply.end(JSON.stringify({"action": "pi"}));
}
khác {
phản hồi.statusCode = 404;
phản hồi.end();
}
}).listen(8080);
Nếu máy khách cũng sử dụng Node.js thì bạn có thể thiết lập dịch vụ webhook/push. Ngày nay, webhook được sử dụng trong tất cả các API chính và chúng cực kỳ phổ biến trong Slack và Microsoft. Phần sau đây được lấy cảm hứng từ Microsoft Office 365 xôVà phát trực tuyếnAPI dịch vụ.
Thêm một tuyến đường mà khách hàng có thể POST, chúng tôi gọi nó là /đặt mua
. hiện hữu /đặt mua
Trong phần nội dung yêu cầu của tuyến đường, chúng chứa một url mà chúng tôi gọi là paReceiverUrl.
Nếu client muốn gửi tin nhắn cho người khác /pa
được thông báo khi điểm cuối gửi tin nhắn, máy khách có thể /đặt mua
Điểm cuối gửi yêu cầu và chứa vị trí cần được thông báo rằng chúng được định vị - paUrl người nhận
(Và bất kỳ thông tin nào khác, có thể là một số dữ liệu xác thực). Để an toàn, bạn nên lưu trữ thông tin khách hàng đã đăng ký trong bộ nhớ cố định, để cơ sở dữ liệu làm việc đó cho bạn hoặc chỉ ghi nó vào một tệp cho đến khi nó phức tạp hơn.
bây giờ của bạn '/pa'
Lộ trình trở nên giống thế này hơn (bước 2 của bạn):
if (request.method === 'GET' && request.url === '/pa') {
// Gửi phản hồi cho người gửi yêu cầu
reply.end(JSON.stringify({"action": "pa"}));
// Lấy thông tin khách hàng đã đăng ký
var subscribeClients = <đọc từ="" tập="" tin="" hoặc="" db="">
// Phát tin
for(var i = 0; i < subscribedClientsUrls.length; i++) {
// Gửi cho họ một yêu cầu tại subscribeClients[i].paReceiverUrl
}
}
đọc>
Bây giờ, ở bước 3, máy khách chỉ cần yêu cầu máy chủ paUrl người nhận
Chấp nhận yêu cầu tại , và sau đó họ có thể gọi bất kỳ JS nào họ muốn.
Nếu bạn cần thêm thời gian thực thì tôi sẽ sử dụng giao thức Web Sockets để thiết lập kết nối HTTP liên tục nhằm truyền dữ liệu.
Tôi là một lập trình viên xuất sắc, rất giỏi!