2012-02-10 127 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

相關問題