2

我对 NodeJS(使用 c9.io)相当陌生,最近对它有这种病态的痴迷。

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

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

谢谢

4

2 回答 2

6

好的,这是一个非常简单的例子。文本区域与登录成员同步。

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

sudo npm install http, socket.io, express

并创建一个 javascript 文件。

服务器.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 文件。

索引.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

所以代码应该像这张图片一样工作: 在此处输入图像描述

于 2012-11-11T08:11:05.663 回答
1

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

http://socket.io/

于 2012-11-11T06:45:16.027 回答