Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Node.js在写入后保持连接而不关闭_Javascript_Node.js_Connection Pooling - Fatal编程技术网

Javascript Node.js在写入后保持连接而不关闭

Javascript Node.js在写入后保持连接而不关闭,javascript,node.js,connection-pooling,Javascript,Node.js,Connection Pooling,我试图解释我的问题: 我有一个每个用户连接的文件:user1.txt,user2.txt(包含javascript代码) 我有一个脚本,可以根据应用程序的发展来更新它们 每个用户调用一个文件demo.php: 客户端HTML: <!DOCTYPE html> <html lang="en"> <head> <title>demo game</title> <script src="/js/jquery-1.

我试图解释我的问题:

  • 我有一个每个用户连接的文件:user1.txt,user2.txt(包含javascript代码)
  • 我有一个脚本,可以根据应用程序的发展来更新它们
  • 每个用户调用一个文件demo.php:
客户端HTML:

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>demo game</title>
    <script src="/js/jquery-1.8.3.min.js"></script>
    <script src="http://127.0.0.1:8080"></script>
  </head>
  <body>
    <div id="messages"></div>
  </body>
</body>
</html>
    var server = require('http').createServer(function(req, res){

               setInterval(function() {
                    mycode = html.readFileSync(__dirname+'/user1.txt');

                    socket.end(mycode+"\n");
                    console.log('data sent'+mycode);

                }, 1000);

         });

    server.listen(8080);
假设user1.txt的内容是:
$(“#消息”).append(
hello”)

发送user1.txt的contain是可以的,并在客户端执行,但是,如果user1.txt包含更改,我会在
console.log('data sent'+mycode)上看到它,我想它发送了什么但没有执行,为什么

我尝试使用
write()
而不是
end()
,并尝试使用:

var net = require('net');
var html = require('fs');
var server = net.createServer({ allowHalfOpen: true},....
一样

再一次:如何在客户端发送“实时javascript代码”

提前感谢


Dany

浏览器可以在呈现
之前加载脚本。在这种情况下,您的代码执行,位没有任何效果。尝试在
user1.txt
中更改代码,如下所示:

$(function() {
    $("#messages").append("<br> hello");
});
$(函数(){
$(“#消息”).append(
hello”); });
浏览器可以在呈现
之前加载脚本。在这种情况下,您的代码执行,位没有任何效果。尝试在
user1.txt
中更改代码,如下所示:

$(function() {
    $("#messages").append("<br> hello");
});
$(函数(){
$(“#消息”).append(
hello”); });
Vadim Baryshev的答案是正确的。还有一个注意事项:我看不到定义了
socket
。我怀疑,
setTimeout()
是否可以或者至少应该这样使用(虽然我对Node.js不是很熟悉)(但这可能只是为了您的调试,我很抱歉)。即使您使用
write()
发送数据,也不要忘记使用
end()
结束发送。正如Node.js的doc中所说:完成发送请求。Vadim Baryshev的回答是正确的。还有一个注意事项:我看不到定义了
socket
。我怀疑,
setTimeout()
是否可以或者至少应该这样使用(虽然我对Node.js不是很熟悉)(但这可能只是为了您的调试,我很抱歉)。即使您使用
write()
发送数据,也不要忘记使用
end()
结束发送。正如Node.js的doc中所说:完成发送请求。抱歉,瓦迪姆,我在日志中看到的是,我得到了user1.txt的新内容,但浏览器端没有任何更改。抱歉,我的失败。我没有完全理解你的问题。您试图以无限循环(setInterval)的方式将数据从user1.txt传输到浏览器?如果是-您使用了错误的方式。你需要使用插座
Webscoket
socket.io
应该可以正常工作。每个新的javascript命令都将作为单独的消息发送到客户端。很抱歉,瓦迪姆,我在日志中看到,我得到了user1.txt的新内容,但在浏览器端没有更改。很抱歉,我失败了。我没有完全理解你的问题。您试图以无限循环(setInterval)的方式将数据从user1.txt传输到浏览器?如果是-您使用了错误的方式。你需要使用插座
Webscoket
socket.io
应该可以正常工作。每个新的javascript命令都将作为单独的消息发送到客户端。你可以执行它。