0

我使用 nodejs 的命名空间开发了一个应用程序,其中客户端(client1)将数据发送到服务器,服务器将相同的数据发送到另一个客户端(client2)。一切正常,除了只有在我刷新页面时才会在 client2 中呈现数据。如何动态更新数据?

代码如下: server::

var io = require('socket.io').listen(8007);
    var chat = io
      .of('/chat')
      .on('connection', function (socket) {
        socket.on('message', function(message){
        console.log("Received message:: " + message + " - from client " + socket.id);
            var news = io
            .of('/news')
            .on('connection', function (socket1) {
            socket1.send("received::" + message + " - from client " + socket.id);
            });
    });
    });

客户端1是::

<script>
var count=0;
function connect() {
  var chat = io.connect('http://localhost:8007/chat');
    chat.send('chat message:::' + count);
    count++;
  }
</script>

接收客户是::

<script>
  var news = io.connect('http://localhost:8007/news');
    news.on('message', function(data){
    document.getElementById('message').innerHTML = "\n Server says: " + data;
    });  
</script>
4

1 回答 1

1

我认为您的问题出在服务器上。在您收到“聊天”连接之前,您不会设置您的“新闻”侦听器。将您的服务器代码更改为如下所示:

var io = require('socket.io').listen(8007);
var newsSocket;
var news = io
    .of('/news')
    .on('connection', function (socket1) {
        newsSocket = socket1;
    });
var chat = io
    .of('/chat')
    .on('connection', function (socket) {
        socket.on('message', function(message){
        console.log("Received message:: " + message + " - from client " + socket.id);
        for(var i=0; i<newsSockets.length; i++) {
            newsSocket.send("received::" + message + " - from client " + socket.id);
        }
    });

注意:这只会将新闻消息发送到最后连接的客户端。您应该有一个新闻连接的集合(数组)。当它们断开连接时,您还应该将它们删除。

于 2012-10-16T15:56:32.510 回答