将控制台输出从节点转换为网页?

时间:2015-08-31 13:41:34

标签: javascript angularjs node.js

我写了一段代码,允许我搜索所有推文标记为hello。

var stream = T.stream('statuses/filter', { track: 'hello', stall_warnings: true });
var counter = 0;

if (stream) {
console.log('connected!');
};


stream.on('tweet', function (tweet) {
    console.log('tweet: '+ tweet.text);
    console.log('by:' + ' @' + tweet.user.screen_name);
    console.log('date:'+ ' ' + tweet.created_at + ' | ' + counter);

counter++;
});

如何重定向这个以便我可以创建一个看起来像Twitter流数据的网页,或类似的东西?也许使用AngularJS。

2 个答案:

答案 0 :(得分:3)

您必须先创建一个Web服务器,然后尝试表达。

然后你可以使用sockets.io之类的东西从服务器到客户端网页进行通信。

然后在网页上你必须处理消息来显示它们(有角度的,或者只是jQuery) - 基本上在推特上你会通过socket.io从服务器发送消息到客户端网页,然后你的dront结束javascript将获取消息,解析它并决定如何显示它。

看看Sails.js,它基本上是通过集成套接字和更多东西来表达

修改

说您在server.js

中导出服务器
var http = require('./server.js');
var io = require('socket.io')(http);

stream.on('tweet', function (tweet) {
  io.sockets.emit("new tweet", {
    text: tweet.text,
    by: tweet.user.screen_name,
    date: tweet.created_at,
    counter: counter++;
  });
});

require('socket.io')(http)启动服务器上的“套接字管理器”(并为其发布js客户端代码),以便客户端可以通过套接字连接到服务器。

io.sockets.emit会向所有已连接的客户端发送消息。

在您的网页上,您必须拥有类似的内容

<div id="tweets"></div>
<script src="/your/js/jquery.js"></script>
<script src="/socket.io/socket.io.js"></script>
<script>
   var socket = io();
   socket.on("new tweet", function(tweet) {
       $('#tweets').append('tweet: ' + tweet.text + '<br>');
       $('#tweets').append('by:' + ' @' + tweet.by + '<br>');
       $('#tweets').append('date:'+ ' ' + tweet.date + ' | ' + tweet.counter + '<br>');
   });
</script>

图书馆/socket.io/socket.io.jsrequire('socket.io')(http)早先发布,因此我们可以在我们的客户上使用它。

调用io()基本上连接到服务器,并返回该连接的句柄(socket),我们使用它来接收来自服务器的所有消息,并且每条消息都可以写入无论如何你想要的内容。

答案 1 :(得分:0)

使用socket.io,您可以将事件从服务器广播到客户端,在这种情况下,您可以执行以下操作:

stream.on('tweet', function (tweet) {
  io.sockets.emit("new tweet", tweet);
  counter++;
});

你可以在客户端收到这样的事件:

var socket = io();
socket.on("new tweet", function(tweet){
  //Do something with the tweet
});

这是一个非常基本的通用示例,有关详细信息,请查看官方文档here