2012-11-11 15 views
3

对于NodeJS(使用c9.io)我相当新,并且最近对这种病态痴迷。NodeJS - 长轮询/推/拒绝阿贾克斯?我需要什么才能将实时数据推送到网络上?

我想知道,而使用NodeJS。是否可以流式传输基本html页面的内容,不是很大,而不是特殊的,可以说10个并发用户。但是,如果对该页面进行了更改,用户将立即看到更改。这可以基于任何事件,但基本上在正在更新的文件内容上。我真的希望创建一些简单的原型来给老板留下深刻的印象,并且用NodeJS来做,希望能够搭上我们目前过时使用的setInterval ajax帖子。呕吐

  1. 这个过程的名字是什么,因为我不断听到不同的名字。
  2. 可能吗?
  3. 除了NodeJS,我还需要什么?
  4. 哪里是一个好的起点?

感谢

回答

7

好吧,这里是一个非常简单的例子。 textarea与登录成员同步。

请安装http,socket.io和express(ver3)。

sudo npm install http, socket.io, express 

并创建一个JavaScript文件。

server.js

var app = require('express')(), 
    server = require('http').createServer(app), 
    io = require('socket.io').listen(server), 
    member_sockets = {}, 
    key; 

server.listen(80); 

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

io.sockets.on('connection', function (socket) { 
    var user_id = socket.id; 

    member_sockets[user_id] = socket; 
    console.log("[login]-->", user_id); 

    socket.on('txt_change', function (data) { 
    for (key in member_sockets) { 
     if (key != user_id) { 
     member_sockets[key].emit("txt_change", data); 
     } 
    }; 
    }); 


    socket.on('disconnect', function (socket) { 
    console.log("[logout]-->", user_id); 
    delete member_sockets[user_id]; 
    }); 
}); 

在同一目录中,你还可以创建一个index.html文件。

的index.html

<!DOCTYPE html> 
<html> 
    <head> 
    <script src="http://code.jquery.com/jquery-1.8.2.min.js"></script> 
    <script src="/socket.io/socket.io.js"></script> 
    <script> 
     var socket = io.connect('http://localhost'); 
     socket.on('txt_change', function (data) { 
     console.log(data); 
     $("#txt").val(data.txt); 
     }); 
     $(document).ready(function(){ 
     $("#txt").keyup(function(){ 
      socket.emit('txt_change', { "txt" : $(this).val() }); 
     }); 
     }); 
    </script> 
    </head> 
    <body> 
    <textarea id="txt" style="width:200px;height:100px"></textarea> 
    </body> 
</html> 

然后用这个命令运行服务器:

sudo node server.js 

所以代码应工作像这样的画面: enter image description here

+0

我没有检查c9.io.我只检查我的Mac。 – wf9a5m75

+0

即时通讯激动地尝试这一点。保持联系。在此先感谢,真的很感谢细目。 – sia

+0

(弓)不能让它在我的本地主机上运行(运行mamp),但我得到它的工作很好c9.io谢谢你! – sia

1

你检查socket.io?您可以使用socket.io模块轻松创建推送服务器。

http://socket.io/

+0

我确实有插座。 io在我的本地机器上安装了节点,并且附带了c9。就所需的附加项目而言,这一切都是如此吗? – sia