Html 使用socket.io/node.js在网页上显示推特流
我正在尝试使用node.js socket.io和twit构建一个Twitter流媒体web应用程序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
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>