2014-09-05 29 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