【问题标题】:Send data from server through HTML file in nodejs通过nodejs中的HTML文件从服务器发送数据
【发布时间】:2016-11-28 11:12:49
【问题描述】:

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

我在 html 中创建了带有两个按钮 leftright 的 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 fileserver.js 交流,但不是client

【问题讨论】:

    标签: javascript html node.js


    【解决方案1】:

    使用 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>";
    };
    

    【讨论】:

    • 我对这个Subscriber End 表示客户端权限感到困惑,但客户端代码是由其他程序员在c# 中完成的。我不在客户端工作,我需要通过套接字编程向他发送字符串。该字符串将是“左”或“右”,这将从我的 html 文件触发。
    • 订阅者可以在双方。是的,前端开发人员/客户端开发人员必须实现订阅者/侦听器来接受消息。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      为此使用socket.io。它具有节点模块以及客户端库。 在所有客户端上实现套接字侦听器。无论哪个客户端正在侦听该事件,都将接收数据。使用 socket io 的客户端 javascript 单击按钮时发出带有事件名称的数据。检查此example 是否相同。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-09-07
        • 2013-09-19
        • 2017-12-15
        • 1970-01-01
        • 2011-07-28
        • 2018-02-07
        • 1970-01-01
        • 2012-07-14
        相关资源
        最近更新 更多