我使用nodejs的命名空间开发了一个应用程序,其中客户端(client1)将数据发送到服务器,服务器将相同的数据发送到另一个客户端(client2)。 一切都运行正常,只有当我刷新页面时才会在client2中呈现数据。如何动态更新数据?
代码如下: 服务器::
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);
});
});
});
,client1是::
<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>
答案 0 :(得分: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);
}
});
注意:这只会将新闻消息发送到最后连接的客户端。你应该有一个新闻连接的集合(数组)。您也应该在断开连接时删除它们。