简体   繁体   English

Socket.io不流式传输到多个连接

[英]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.emitsockets.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM