gpt4 book ai didi

node.js - NodeJS - 长轮询/推送/反向 ajax?我需要什么才能将实时数据即时推送到网络?

转载 作者:搜寻专家 更新时间:2023-11-01 00:15:45 24 4
gpt4 key购买 nike

我是 NodeJS 的新手(使用 c9.io)并且最近对它有这种病态的痴迷。

我想在使用 NodeJS 时了解。是否可以流式传输基本 html 页面的内容,该页面不大,也不是特别适合 10 个并发用户。但是,如果该 html 页面发生变化,用户将立即看到变化。这可以基于任何事件,但基本上基于正在更新的文件内容。我真的希望创建一些简单的原型(prototype)来打动老板,并使用 NodeJS 来完成它,希望能摆脱我们目前过时的 setInterval ajax 帖子的使用。呕吐

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

谢谢

最佳答案

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

请安装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

关于node.js - NodeJS - 长轮询/推送/反向 ajax?我需要什么才能将实时数据即时推送到网络?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13329129/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com