[英]Socket.io not streaming to multiple connections
I am trying to stream tweets to the client and everything works fine, as long as there is only one connection. 我试图将推文流式传输到客户端,并且只要只有一个连接,一切都可以正常工作。 If I am am streaming tweets in one tab of my browser and open the page up in a new tab, the first tab will stop receiving the new tweets and only the second tab will receive them.
如果我正在浏览器的一个选项卡中流式发送推文,并在新选项卡中打开页面,则第一个选项卡将停止接收新推文,只有第二个选项卡将接收它们。
Server code. 服务器代码。
io.sockets.on('connection', function (socket) {
var twitter = require('ntwitter'),
util = require('util'),
twit = new twitter({
consumer_key: '',
consumer_secret: '',
access_token_key: '',
access_token_secret: ''
});
twit.stream('statuses/filter', {'locations':'-124.46, 24.31, -66.57, 49.23'},
function(stream) {
stream.on('data', function (data) {
data.geo ? socket.emit('twitter', data) : ''
});
});
Client code: 客户代码:
var socket = io.connect()
socket.on('twitter', function (data) {
//Do really awesome things.
});
What am I doing wrong? 我究竟做错了什么? It has to be simple.
它必须很简单。 I can't imagine its this hard to support multiple connections.
我无法想象它很难支持多个连接。
Cheers 干杯
Try changing socket.emit
to sockets.emit
: 尝试改变
socket.emit
到sockets.emit
:
io.sockets.on('connection', function (socket) {
var twitter = require('ntwitter'),
util = require('util'),
twit = new twitter({
consumer_key: '',
consumer_secret: '',
access_token_key: '',
access_token_secret: ''
});
twit.stream('statuses/filter', {'locations':'-124.46, 24.31, -66.57, 49.23'},
function(stream) {
stream.on('data', function (data) {
data.geo ? sockets.emit('twitter', data) : ''
});
});
Or if that doesn't work, adding socket.broadcast.emit
in addition to socket.emit
as shown below: 或者,如果不工作,加入
socket.broadcast.emit
除了socket.emit
,如下图所示:
io.sockets.on('connection', function (socket) {
var twitter = require('ntwitter'),
util = require('util'),
twit = new twitter({
consumer_key: '',
consumer_secret: '',
access_token_key: '',
access_token_secret: ''
});
twit.stream('statuses/filter', {'locations':'-124.46, 24.31, -66.57, 49.23'},
function(stream) {
stream.on('data', function (data) {
data.geo ? socket.emit('twitter', data) : ''
data.geo ? socket.broadcast.emit('twitter', data) : ''
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.