node.js从脚本调用函数来更新UI

时间:2013-09-12 05:44:53

标签: 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 is not defined.

如何简单地将从node.js服务器收到的数据传递给我的其他Web应用程序?感谢。

1 个答案:

答案 0 :(得分:2)

您必须将该方法(使用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());
});