javascript - Node.js 从脚本调用函数来更新 UI

标签 javascript jquery html node.js websocket

这是我的网络服务器:

var net = require('net');

var server = net.createServer(function(socket) {
    socket.write('hello\n');
    socket.write('world\n');

    //RECEIVE PACKET ON SOCKET
    socket.on('data', function(data) {
        //socket.write(data);
        //console.log(data);
        testSocketData(data)
    });
    
});

server.listen(8000);

方法 testSocketData(data) 位于文件 update_ui.js 中,并执行以下操作:

function testSocketData(test) {
    $('#p1').text(test)
}

其中#p1指的是我的main.html中的段落元素的id。我知道我的套接字正在工作,但是我得到:

ReferenceError:testSocketData 未定义。

如何简单地将从 Node.js 服务器接收到的数据传递给 Web 应用程序的其余部分?

最佳答案

您必须将该方法(以及 socket.on('data'))从服务器移动到客户端。当您通过套接字接收消息时,p1 元素也会更新其文本。

在服务器上,您仍然需要有一个 socket.on('data') 来接收来自客户端的消息。

编辑: 这是一些代码,与我下面的评论略有不同。 在服务器上:

function computeSomeResults(data) {
// your logic here
}
socket.on('servermsg', function(data) {
  var result = computeSomeResults(data);
  socket.emit('clientmsg', result);
});

在客户端:

function testSocketData(test) {
    $('#p1').text(test);
}
socket.on('clientmsg', function(data) {
  testSocketData(data);
  // emit something maybe?
}

最终,您可能想向服务器发送一些内容:

$('#p1').on('click', function(){
  socket.emit('servermsg', $(this).text());
});

关于javascript - Node.js 从脚本调用函数来更新 UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18756233/

相关文章:

javascript - 删除重复的子数组

javascript - Javascript 中的等号和大于号 (=>) 是什么意思?

javascript - 如果用户两次插入错误的凭据,Jquery 登录功能将不起作用

Jquery Selectbox I beam 问题

php - Wordpress REST API 自定义帖子类型 禁止删除访问

javascript - 在 javascript 或 jquery 中禁用日期选择器的下一个日期

javascript - JQuery 验证模式问题

html - div width 100% 在本地主机上完美运行,但不能实时运行

html - 在 flash 上覆盖 html?

javascript - 如何使用 Bootstrap 禁用幻灯片中的左右箭头