2013-03-26 7 views
0

heroku에서 node.js twitter 스트리밍 앱을 설정하고 있습니다. 두 번째 클라이언트가 연결될 때까지 완벽하게 작동합니다. Socket.IO는 Heroku가 작업 난이 지침을 따랐 얻으려면 https://github.com/peeinears/tweet-pipeHeroku, Socket.IO, Node.js

이 내가 트위터 STRAM의 API 기능에 트윗 파이프를 사용하고있는 사람 :(

로했다 때까지 기대하지 않은 무언가이다 : 내 app.js에서 https://devcenter.heroku.com/articles/using-socket-io-with-node-js-on-heroku

io.configure(function() { 
    io.set("transports", ["xhr-polling"]); 
    io.set("polling duration", 10); 
}); 

이 모든 다른 클라이언트까지 좋은 작품, 내가 다시

io.sockets.on('connection', function (socket) { 
    tp.stream('statuses/filter', params, false, function (stream) { 
    stream.on('tweet', function (tweet) { 
     socket.emit('tweet', tweet); 
    }); 
    }); 
}); 

이 파일 페이지를 방문합니다. 그런 다음 두 번째 클라이언트가 연결되어있는 동안 원래 연결이 손실됩니다. 이견있는 사람? 나는 Socket.IO에 조금 익숙하다.

+2

각 커넥터에 대해 새로운 트윗 파이프를 만들거나 tp 스트림을 별도로 등록하고 메시지를 브로드 캐스트합니다. ('io.sockets.emit ('tweet', tweet)')는 몇 가지 간단한 아이디어이다. 나는 그 이상의 조언을하기 위해 짹짹 파이프 또는 사용 사례에 대해 충분히 알지 못합니다. – Chad

+0

감사합니다. @Chad. 이것은 상당히 도움이되었습니다. – Tyler

답변

0

가 여기에 내가 코멘트에 차드에, 덕분에 그것을 해결 방법은 다음과 같습니다. 그것은 살아 있고 다소 건강하기 때문에 지금은 잘 작동하는 것 같습니다.

io.sockets.on('connection', function (socket) { 

    var tp = new TweetPipe({ 
    consumer_key: process.env.CONSUMER_KEY, 
    consumer_secret: process.env.CONSUMER_SECRET, 
    token: process.env.TOKEN, 
    token_secret: process.env.TOKEN_SECRET 
    }); 

    tp.stream('statuses/filter', params, false, function (stream) { 
    stream.on('tweet', function (tweet) { 
     io.sockets.emit('tweet', tweet); 
    }); 
    }); 

}); 
+1

문제는 연결된 사람의 수에 따라 브라우저에 중복 메시지가 표시 될 때마다 다른 사람이 연결할 때마다 실행됩니다. '연결'이벤트 외부에서이 코드를 한 번만 실행하거나 첫 번째 연결에만 한 번만 실행하십시오. – Chad