2012-02-10 91 views
4

我想制作一个网页,使用socket.io + node.js每隔1秒给客户端发送他的朋友的消息。socket.io setinterval的方式

我的代码:

客户:

var socket = io.connect('http://localhost:port'); 
socket.on('connect', function(){ 
    socket.emit('hello', 'Hello guest'); 
}); 
socket.on('news_by_server', function(data){ 
    alert(data); 
}); 
setInterval(function(){ 
    socket.emit('news', 'I want news :D '); 
}, 1000); 

服务器:

var io = require('socket.io').listen(port); 
    io.sockets.on('connection', function (socket) { 
     socket.on('hello', function(data){ 
      console.log('new client connected'); 
     }); 
     socket.on('news', function(data){ 
      socket.emit('news_by_server', 1); 
     }); 
    }); 

这就是主码,但我的问题是有关的间隔是好了制作实时新闻或者有更好的方法。

回答

12

客户无需索取新闻。如果要每隔1秒发出一次,您可以强制服务器 - 只要有客户端连接,它们就会收到更新。如果没有连接的客户端,您会在日志中看到没有任何反应。

在服务器

setInterval(function(){ 
    socket.emit('news_by_server', 'Cow goes moo'); 
}, 1000); 

在客户

socket.on('news_by_server', function(data){ 
    alert(data); 
}); 
+0

谢谢,这是我要寻找 – user1194313 2012-02-11 15:42:03

+4

当你写'socket.emit(... ',在服务器端,什么是'套接字'?我得到一个错误,说'套接字'没有被定义。谢谢 – JakeTheSnake 2016-04-21 11:57:10

+1

io.sockets.on('connection',function(_socket_){ – outluch 2017-08-07 19:29:22

1

这几乎是标准的做法。如果你还没有看过socket.io上的example apps页面,有一个beibertweet例子,它使用setInterval来完成这个工作。这个博客上还有slightly more advanced example

加..我在YouTube上发现Ryan Dahls's intro对于理解节点操作的基本知识非常有用。

希望有所帮助。

+0

我想简单的代码,请 – user1194313 2012-02-11 13:31:34