收到socket.io时页面不会自动更新

时间:2019-02-04 10:52:56

标签: javascript node.js express websocket socket.io

当新的socket.io数据出现时,我想页面更新。 我有一个服务器->客户端通讯: 服务器代码(n var是消息)

io2.on('connection', function(socket2) {  
    socket2.on('live', function(data2) {
    console.log('status from live client:', data2);
    socket2.emit('live', n);
});
});

实时页面代码:

    var socket = io.connect('http://localhost:3002');
    socket.emit('live', 'live client is connected');
    socket.on('live', function(data) {
        //alert(data)
        document.getElementById("demo").innerHTML = data;

    });

套接字工作正常,因为当我发送数据并刷新页面时,它会显示我想要的内容。问题是我想查看更新后的消息,而无需手动刷新。

谢谢!

2 个答案:

答案 0 :(得分:0)

n的范围在第一个函数中未定义,因此接收函数没有任何显示。

您需要在原始发射函数中定义n。

答案 1 :(得分:0)

您需要将事件从服务器端发送到客户端,然后在其中捕获数据

var server = app.listen(3000);  
var io = require('socket.io')(server);


io.on('connection', function(socket) {  
  socket.on('event', function(data) {
    var n = data.message;
    io.sockets.emit('event', message);

});

然后在实时页面的前端上编写

var n = <%-JSON.stringify(v1)%>;
var socket = io.connect('http://localhost:3000');
socket.on('event', (data)=>{
     console.log(data)
});