草庐IT

阻塞IO

全部标签

javascript - 在 expressjs 路由中使用 socket.io 而不是在主 server.js 文件中

我有express/nodejsapi。我正在向它添加socket.io功能。目前我所有的路由都在单独的文件夹中,我将它们包含在server.js文件中并将它们用作app.use()函数。在server.js文件中,我还通过监听特定端口(例如3000,如下所示)来启动express服务器。letserver=app.listen(3000);根据所有谷歌搜索,我发现我需要传递服务器变量来初始化socket.io,如下所示。letio=require('socket.io')(server);现在的问题是,既然它需要这个变量,那么我如何在不同文件夹中的路由文件中使用socket.io来发

javascript - Socket.io 1.0 + express 4.2 = 无套接字连接

如标题所述,我正在尝试将socket.io1.0.4与express4.2一起使用,所有/?EIO请求都返回404。下面是我的文件:./bin/www:#!/usr/bin/envnodevardebug=require('debug')('generated-express-app');varapp=require('../app');app.set('port',process.env.PORT||3000);varserver=app.listen(app.get('port'),function(){debug('Expressserverlisteningonport'+se

javascript - node.js 是如何实现非阻塞 I/O 的?

来自here我发现node.js实现了非阻塞i/o模型。但我不明白。因为javascript是单线程的。单个线程如何在进行I/O操作的同时执行进一步的进程。 最佳答案 的确,sleep等操作会阻塞线程。但I/O事件确实可以是异步的。Node.js为此使用事件循环。事件循环是“处理和处理外部事件并将其转换为回调调用的实体”每当需要数据时,nodejs都会注册一个回调并将操作发送到此事件循环。只要数据可用,就会调用回调。http://blog.mixu.net/2011/02/01/understanding-the-node-js-e

javascript - 与其他模块共享 socket.io 会给出空对象

我正在尝试在不同的node.js模块中共享socket.io的套接字对象,尽管我失败了并且得到了空对象Cannotcallmethod'on'ofundefined我的代码:app.jsvarexpress=require('express'),app=express();varserver=require('http').createServer(app),io=require('socket.io').listen(server)varroutes=require('./routes'),path=require('path'),rss=require('./routes/rss'

javascript - Socket.io:使用套接字 ID 检查连接状态

我有一个连接的套接字ID。我可以在另一个连接的函数处理程序中获取该连接的状态吗?像这样:io.sockets.on('connection',function(socket){/*havingthesocketidof*another*connection,Ican*checkitsstatushere.*/io.sockets[other_socket_id].status}有办法吗? 最佳答案 对于高于1.0的版本,请查看KaranKapoor的回答。对于旧版本,您可以使用io.sockets.sockets[a_socket_

javascript - async/await 会阻塞事件循环吗?

这个问题在这里已经有了答案:Willasync/awaitblockathreadnode.js(6个答案)InJavaScript,doesusingawaitinsidealoopblocktheloop?(8个答案)关闭4年前。我正在阅读Don'tBlocktheEventLoop来自Node.js指南。有一句话说:YoushouldmakesureyouneverblocktheEventLoop.Inotherwords,eachofyourJavaScriptcallbacksshouldcompletequickly.Thisofcoursealsoappliestoyo

javascript - 如何计算像geojson.io这样的Leaflet中多段线的距离?

我正在使用Mapbox和Leaflet制作map,我应该让用户绘制多边形并计算并显示该多边形的面积,我还需要让用户绘制折线并显示折线的距离.我已经弄清楚了多边形区域特征,但我不知道如何计算多段线的距离。我的代码如下:loadScript('https://api.tiles.mapbox.com/mapbox.js/plugins/leaflet-draw/v0.2.2/leaflet.draw.js',function(){loadScript('https://api.tiles.mapbox.com/mapbox.js/plugins/leaflet-geodesy/v0.1.0

javascript - 在 Node.js 中,setTimeout() 是否会阻塞事件循环?

如果我有一个简单的setTimeout()函数,并将其设置为10秒...整个服务器在那10秒内就死机了???这是真的?这就是我听到的。 最佳答案 答案是否。你的链接是什么Node.js:Howwouldyourecreatethe'setTimeout'functionwithoutitblockingtheeventloop?显示的不是阻止事件循环的setTimeout它是故意阻止事件循环的while循环。如果你想让你的服务器运行得更快,你不想阻塞事件循环。诸如setTimeout之类的异步回调会非常有效。您是否出于某种原因(例如

javascript - react 大数据 block 的非阻塞渲染

最近我开始学习react,想知道是否有某种模式可以用于大数据的非阻塞UI线程渲染。比方说,我们取thisexample:,点击创建很多项目,设置数量,比方说10000,我们将获得卡住的UI将近10秒。它使用可观察对象平滑地更新,一旦完成渲染,我明白了,但是有没有办法以block的形式平滑地渲染它?通常,您会设置某种数组,将其切片,比方说50,处理这些数组并将setTimeout设置为0以切片另一个50,依此类推。重复直到数组的长度为0。是否有反应组件的模式来做到这一点?也许一些插件或直到mixin? 最佳答案 您可以使用reques

javascript - Flash 阻塞 javascript 事件

这是对原始帖子的编辑,现在我更好地理解了这个问题。现在有了源代码!在IE中,如果body(或另一个htmldiv有焦点),然后您在同时按下并单击flash,然后释放...永远不会触发keyup事件。它不会在javascript或flash中触发。这个keyup事件在哪里?这是您获得的事件触发顺序:javascriptKeyEvent:bodyDn**currentFocusedElement:bodyjavascriptKeyEvent:docDn**currentFocusedElement:bodyactionScriptEvent:激活**currentFocusedElemen