通过nodejs中的HTML文件从服务器发送数据
问题描述:
我的目标是从我的html文件触发的文本left
或right
发送到连接到服务器(我的nodejs服务器文件)的所有客户端。我尝试了许多在线解决方案,但我无法理解,其中一些不能正常工作,因为我不是常规nodejs程序员。通过nodejs中的HTML文件从服务器发送数据
我使用两个按钮left
和right
在html中创建了web应用程序。当我点击html文件上的左键时,我所有连接的客户端都应该看到文字“左”。我还创建了server.js
nodejs文件,它完全与所有客户端进行通信。问题是我如何获得html文件和服务器文件之间的通信。
注意:html
文件是服务器端触发点不是client
。
server.js
var net = require('net');
var HOST = '127.0.0.1';
var PORT = 8888;
net.createServer(function (sock) {
console.log('connected : ' + sock.remoteAddress + ':'+sock.remotePort);
var ip = sock.remoteAddress.split(':')[3];
console.log(ip);
sock.write('hello client you are connected with server 10.0.0.19...');
sock.on('data', function (data) {
console.log('DATA '+ sock.remoteAddress+' - '+data);
sock.write('you said : '+data);
});
function sendto(result) { //tried call from html file
console.log('sent '+result);
sock.write('data : '+result);
}
sock.on('close', function (data) {
console.log('closed');
});
}).listen(PORT);
console.log('server running on '+PORT);
帮我的沟通方式我html file
与server.js
,但不能作为client
。
答
使用SSE,服务器发送事件从您的服务器向所有连接发送事件。
来自客户端: 无论何时您点击左/按钮,您都会点击节点的api。点击时相同的API将向所有客户端发布SSE。
在订户终端,
var source = new EventSource("/pageTell"); (an API which your server exposes)
source.onmessage = function(event) {
document.getElementById("result").innerHTML += event.data + "<br>";
};
答
HTTP,默认情况下,是其并不总是连接一个短暂的请求响应的连接。意思是,服务器发出一个HTML或相关页面,然后连接断开。根据您的使用情况,您需要服务器保持连接处于打开状态,以便可以向所有连接的客户端通知状态更改。
对于你的用例,你需要一些像WebSockets(非常整洁地记录在html5rocks https://www.html5rocks.com/en/tutorials/websockets/basics/)。或者如果您打算支持旧版浏览器,请查看socket.io。 Socket IO基本示例应该能够帮助您实现您的要求
我很困惑这个'Subscriber End'意味着客户端的权利,但客户端代码是由其他程序员和c#完成的。我不在客户端工作,我需要用套接字编程向他发送字符串。那个字符串将会从我的html文件中触发的“左”或“右”。 –
订户可以位于双方。是的,前端开发者/客户端开发者必须实现订阅者/听众接受消息。 –