Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.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_Websocket - Fatal编程技术网

Javascript Node.js中如何处理具有函数的对象?

Javascript Node.js中如何处理具有函数的对象?,javascript,node.js,websocket,Javascript,Node.js,Websocket,我目前正在使用Node.js处理我网站的后端,但我不确定WebSocket/对象是如何一起处理的 这是一个模板,我正在使用它作为我的主类的示例。(向特定页面发送web请求) 假设我从WebSocket接收数据,该数据创建了一个新的ViewClass对象并立即开始运行。现在运行的代码会阻止Node.js服务器的输入/输出吗?还是会在后台处理 如果有任何我可以提供的信息让它更清晰,请告诉我,因为我对Websocket/Js非常陌生,而且我很可能丢失了信息。您的ViewClass代码正在启动views

我目前正在使用Node.js处理我网站的后端,但我不确定WebSocket/对象是如何一起处理的

这是一个模板,我正在使用它作为我的主类的示例。(向特定页面发送web请求)

假设我从WebSocket接收数据,该数据创建了一个新的ViewClass对象并立即开始运行。现在运行的代码会阻止Node.js服务器的输入/输出吗?还是会在后台处理


如果有任何我可以提供的信息让它更清晰,请告诉我,因为我对Websocket/Js非常陌生,而且我很可能丢失了信息。

您的
ViewClass
代码正在启动
views
XMLHttpRequests,然后什么也不做,只是等待响应回来。因为常规的
XMLHttpRequest
是异步的(如果没有为
async
标志传递
false
),服务器可以在代码等待
XMLHttpRequest
响应时自由地做其他事情

现在运行的代码会阻止Node.js服务器的输入/输出吗

不,因为这是异步代码,所以它不会阻止服务器的输入/输出

还是会在后台处理

响应本身不在后台处理。Nodejs在单个线程中运行Javascript(假设这里没有使用的WorkerThreads)。但是,等待网络响应是异步的,由后台事件循环中的本机代码处理。因此,当您的代码只是等待事件发生时,NodeJ和您的服务器可以自由地响应其他传入事件(例如其他传入请求)


紧急编辑:

此代码:

 xhr.open("GET", link, false);

正在尝试同步
XMLHttpRequest
。在node.js服务器中,这是一件可怕的事情。这将阻止所有其他活动。将
false
更改为
true
,以允许xhr请求是异步的。

这绝对是我想要的,非常感谢。我猜创建多个这样的对象也可以吗?这将是公开的,因此人们将定期使用它,并且可以创建一个以上的ViewClass对象。“因为
XMLHttpRequest
是异步的,所以服务器可以在代码等待时自由地做其他事情”-嗯?
XMLHttpRequest
在客户端运行,它不会阻止浏览器的主呈现线程,但这与nodejs服务器处理请求的方式无关。哦,等等,OP确实在服务器上运行,我错过了。虽然我不能在客户端处理请求,但这很奇怪,所以我必须重新思考web套接字是如何工作的。我需要服务器处理所有信息。我上面链接的websocket文件位于Node.js服务器上。不是在客户端。编辑:刚刚看到你改变了你的回答,我的坏哈哈。但是,没有
xhr.open(“GET”,link,false)创建同步请求?我想知道这在node.js中是如何实现的。
server.on('connection', function (socket) {
  console.log("Welcomed Connection from: " + socket.remoteAddress);

  socket.on('close', function (resp) {
    console.log(`[${GetDate(3)}] Bye!`);
  });

  socket.on('data', function (buf) {
    // Take Views/URL from Front-end.
    // Initialise a new Object from ViewClass and let it run until finished.
  });
});
 xhr.open("GET", link, false);