2

ツイートをクライアントにストリーミングしようとしていますが、接続が 1 つしかない限り、すべて正常に動作します。ブラウザの 1 つのタブでツイートをストリーミングしていて、そのページを新しいタブで開いた場合、最初のタブは新しいツイートの受信を停止し、2 番目のタブのみが受信します。

サーバーコード。

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) : ''
    });
 });

クライアントコード:

var socket = io.connect()

socket.on('twitter', function (data) {

    //Do really awesome things.

});

私は何を間違っていますか?シンプルでなければなりません。複数の接続をサポートするのがこれほど難しいとは想像できません。

乾杯

4

1 に答える 1

1

に変更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) : ''
    });
 });

または、それが機能しない場合は、以下に示すよう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) : ''
    });
 });
于 2012-11-12T01:44:40.430 に答える