通过nodejs中的HTML文件从服务器发送数据

时间:2016-11-28 11:12:49

标签: javascript html node.js

我的目标是将从我的html文件触发的文本leftright发送到连接到服务器的所有客户端(我的nodejs服务器文件)。我尝试了许多在线解决方案,但我无法理解,其中一些无法正常工作,因为我不是常规的nodejs程序员。

我已在html中创建了带有两个按钮leftright的网络应用。当我点击html文件上的左键时,我所有连接的客户端都应该得到文本" left"。我还创建了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 fileserver.js进行沟通,而不是client

3 个答案:

答案 0 :(得分:0)

使用SSE,服务器发送事件将服务器中的事件发送到您的所有连接。

来自客户: 每当你点击左/按钮,你就会点击你的NODE的api。命中时,相同的API会将SSE发布给所有客户端。

在Subscriber End中,

var source = new EventSource("/pageTell"); (an API which your server exposes)

source.onmessage = function(event) {
    document.getElementById("result").innerHTML += event.data + "<br>";
};

答案 1 :(得分:0)

默认情况下,HTTP是一个短期请求响应连接,并不总是连接。意思是,服务器发送HTML或相关页面,然后断开连接。根据您的用例,您需要服务器保持连接打开,以便可以通知所有连接的客户端状态更改。

对于您的用例,您需要类似WebSockets的东西(在html5rocks https://www.html5rocks.com/en/tutorials/websockets/basics/上非常整齐地记录)。或者,如果您打算支持旧浏览器,请查看socket.io。 Socket IO基本样本应该能够帮助您实现您的要求

答案 2 :(得分:0)

使用socket.io。它有节点模块和客户端库。 在所有客户端上实现套接字侦听器。无论哪个客户端正在收听该事件,都将收到数据。使用socket io的客户端javascript单击按钮时,使用事件名称发出数据。请查看此example以获取相同内容。