我有以下代码:
/* 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
});
});
运行时,如果我使用hashtag发推文,我会得到日志但没有发送套接字消息。此外,以下任何推文都不会做任何事情,这表明emit函数已挂起。在我启动服务器的日志中,在开始时我看到:
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 :(得分:0)
更改此行
var port = process.env.PORT || 3010;
到
var port =8080; // for testing