2014-09-05 43 views
0

我有以下代碼:socket.io發射到所有插座不工作

/* WEB SERVER AND SOCKET */ 
var express = require("express"); 
var app = express(); 
var port = process.env.PORT || 3010; 
var io = require('socket.io').listen(app.listen(port)); 


io.configure(function() { 
    io.set("transports", [ 
    'websocket' 
    , 'xhr-polling' 
    , 'flashsocket' 
    , 'htmlfile' 
    , 'jsonp-polling' 
    ]); 
    io.set("polling duration", 10); 
}); 

/* TWITTER STUFF */ 

t.track('hashtag'); 
t.track('sometag'); 

t.on('tweet', function (tweet) { 
    console.log('Tweet received from ' + tweet.user.name + ' (@' + tweet.user.screen_name + '): ' + tweet.text); 
    io.sockets.emit('tweet', { 
     user: { 
      name: tweet.user.name, 
      screen_name: tweet.user.screen_name, 
      profile_pic: tweet.user.profile_image_url 
     }, 
     text: tweet.text, 
     time: tweet.created_at, 
     photo: tweet.media.media_url 
    }); 
}); 

當運行這個,如果我鳴叫使用#標籤,我得到的日誌,但不發送套接字消息。此外,以下任何推文都不會做任何事情,這表明發佈函數掛起。在我的日誌啓動服務器時,一開始我看到:

info - socket.io started 
info - FlashPolicyFileServer received an error event: listen EADDRINUSE 

然而,連接仍可進行。正在運行netstat -tulpn | grep :3010不會返回任何內容,所以我沒有真正瞭解問題所在。我正在運行socket.io 0.9.16並表示3.5.1。

回答

0

改變這一行

var port = process.env.PORT || 3010; 

var port =8080; // for testing 
+0

你看到的console.log輸出是簡單,它是從VAR牛逼聽衆的原因。 io.sockets可能不起作用(這就是你沒有爲該端口獲得netstat的原因) – 2014-09-05 22:43:55