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

Javascript node.js从脚本调用函数以更新UI,javascript,jquery,html,node.js,websocket,Javascript,Jquery,Html,Node.js,Websocket,这是我的Web服务器: 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);

这是我的Web服务器:

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
指my
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());
});

我不明白-我是否应该将所有Web服务器代码移到我的
update\u ui.js
脚本中,然后运行
node update\u ui.js
而不是
node webserver.js
?或者将UI更新功能放在
webserver.js
脚本中?这里是新的node.js用户。您无法从服务器访问客户端的方法。您必须从服务器发送所需的数据和文本。这就是全部!在客户端,必须侦听数据并应用testSocketData方法。这就是为什么我说您必须将它从服务器端移动到客户端,并提供一种在服务器中侦听和发送数据的机制。
这就是为什么我说您必须将它从服务器端移动到客户端,并提供一种在服务器中侦听和发送数据的机制。
那么我该如何做?请看一看。他们在服务器上有一个
socket.on('my other event')
,您必须有一个类似的侦听器,
socket.on('data',function(data){var result=/*使用收到的数据执行一些计算。*/socket.emit('data',result)})