Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 使用socket.io/node.js在网页上显示推特流_Html_Node.js_Twitter_Socket.io - Fatal编程技术网

Html 使用socket.io/node.js在网页上显示推特流

Html 使用socket.io/node.js在网页上显示推特流,html,node.js,twitter,socket.io,Html,Node.js,Twitter,Socket.io,我正在尝试使用node.js socket.io和twit构建一个Twitter流媒体web应用程序 var express = require('express') , app = express() , http = require('http') , server = http.createServer(app) ,Twit = require('twit') , io = require('socket.io').listen(server); server.lis

我正在尝试使用node.js socket.io和twit构建一个Twitter流媒体web应用程序

var express = require('express')
  , app = express()
  , http = require('http')
  , server = http.createServer(app)
  ,Twit = require('twit')
  , io = require('socket.io').listen(server);

server.listen(8080);

// routing
app.get('/', function (req, res) {
  res.sendfile(__dirname + '/index.html');
});

var watchList = ['love', 'hate'];


io.sockets.on('connection', function (socket) {
  console.log('Connected');

  var T = new Twit({
    consumer_key:         ''
  , consumer_secret:      ''
  , access_token:         ''
  , access_token_secret:  ''
})
 T.stream('statuses/filter', { track: watchList },function (stream) {

  stream.on('tweet', function (tweet) {

        io.sockets.emit('stream',tweet.text);
        console.log(tweet.text);

  });
 });
}); 
这是我的客户

 <script src="/socket.io/socket.io.js"></script>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.js"></script>
  <script>
    $(function(){
      var socket = io.connect('http://localhost:8080');
      socket.on('tweet', function(tweet) {
    $(
        '<div class="tweet">' + tweet.text + '</div>');
        }); 

  });

  </script>
</div>
debug-websocket写作5::{“姓名”:“流”,“args”:[“RT@laurenpeikoff:#BREAKING@ScottsdalePD证实-警方正在调查迈克尔·比斯利涉嫌性侵犯。@12News@azcentr…”


希望您能帮助我纠正错误。

第一个问题是,每次打开套接字连接时,您都在构建一个新的twitter侦听器。您应该将其移到
连接
事件之外。这可能并不理想。我不确定twitter模块在内部是如何处理的,但它很可能在每次websocket连接时都会创建一个新的API连接

在客户端,jQuery可能有点不同。如果您只是想在每次出现tweet时向页面添加一条tweet,请使用
$('body')。append()

请参见已解决的问题

以下是没有任何错误的代码:(服务器端)

(客户端)


var socket=io.connect('http://localhost:8080');
socket.on('stream',函数(tweet){
$(“#tweeted”).append(tweet+”
); });
您手边有控制台输出吗?io.sockets.emit不应该是只
socket.emit
?io.sockets.emit发送给所有人。当我添加io.sockets.on('connection',函数(socket))时{在使用stream函数之前,我松开了控制台日志输出。事实上,它正在等待我访问localhost:8080来记录tweets。我只想将这些tweets放入webgeawesome!感谢您提供的代码,对于这些复制和粘贴的代码,服务器端脚本有一个额外的
})
在不需要的文件末尾。@maximeHeckel,你分享的好例子。我在我的应用程序上也尝试过同样的方法。但是我需要一些用户而不是“关键字”。意味着你提到了一些关键字(如观察列表),但我想从我的朋友那里获得推文。我也有相同的用户ID。但我没有得到预期的结果。这里我提出了一个问题。请检查一下。你知道我遗漏了什么吗?或者你有任何示例可以从推文的选定屏幕名称获得实时推文?谢谢
info  - socket.io started
debug - served static content /socket.io.js
debug - client authorized
info  - handshake authorized pwH0dbx4WvBhzSQXihpu
debug - setting request GET /socket.io/1/websocket/pwH0dbx4WvBhzSQXihpu
debug - set heartbeat interval for client pwH0dbx4WvBhzSQXihpu
debug - client authorized for
debug - websocket writing 1::
debug - websocket writing 5:::{"name":"stream","args":["RT @mintycreative: Great to chat       today RT @SharonHolistic: Treatments available tomorrow http://t.co/5Poq3KU08u Book yours now #WestMidsHou…"]}
var express = require('express')
  , app = express()
  , http = require('http')
  , server = http.createServer(app)
  ,Twit = require('twit')
  , io = require('socket.io').listen(server);

server.listen(8080);

// routing
app.get('/', function (req, res) {
res.sendfile(__dirname + '/index.html');
});

var watchList = ['love', 'hate'];
 var T = new Twit({
    consumer_key:         ''
  , consumer_secret:      ''
  , access_token:         ''
  , access_token_secret:  ''
})

io.sockets.on('connection', function (socket) {
  console.log('Connected');


 var stream = T.stream('statuses/filter', { track: watchList })

  stream.on('tweet', function (tweet) {

    io.sockets.emit('stream',tweet.text);


  });
 });
}); 
 <script src="/socket.io/socket.io.js"></script>
   <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.js"></script>
  <script>

        var socket = io.connect('http://localhost:8080');
        socket.on('stream', function(tweet){
        $('#tweetd').append(tweet+'<br>');
        });
  </script>
  <div id="tweetd"></div>
</div>