gpt4 book ai didi

javascript - 我正在开发的 Express/Socket.io 应用程序中的奇怪 JavaScript

转载 作者:太空宇宙 更新时间:2023-11-03 22:37:19 25 4
gpt4 key购买 nike

我正在尝试使用 Brian Ford 的优秀 https://github.com/btford/angular-socket-io-seed 开发一个类似 SCADA 的应用程序作为一个起点,但我遇到了一些我不理解的 JavaScript 代码。更糟糕的是我什至不知道要寻找什么。我通过 Google 找到的每个示例都使用第二种语法,但这里至少不起作用。

主 app.js 中的这段代码可以工作,但我需要访问套接字对象,以便将其传递给正在开发的模拟模块,因此我需要更改它。但是当我更改套接字连接回调时,模块不再被加载。我知道 paths/socket.js 中的代码何时运行,因为日志行 MET3: 来自其中。

有人可以告诉我原始线路正在做什么,以便我可以对其进行更改吗?这是我应该使用的一些很酷的新速记法吗?

不确定是否相关,但我正在运行 socket.io 0.9.16 和 node.js 0.10.29。

<小时/>
var io = require('socket.io').listen(server);

// many lines latter

io.sockets.on('connection', require('./routes/socket.js')); // What is this?

Working Output
Express server listening on port 3000
debug - client authorized
info - handshake authorized hOEv8Iv7pPO1xLdxdq1V
MET1: routes/index.js index()
debug - setting request GET /socket.io/1/websocket/hOEv8Iv7pPO1xLdxdq1V
**MET3:** routes/socket.js Socket ID [hOEv8Iv7pPO1xLdxdq1V] connected
debug - websocket writing 5:::{"name":"send:name","args":[{"sockName":"JohnDoe","sockPage":"RETS"}]}
debug - websocket writing 5:::{"name":"send:time","args":[{"time":"Fri Jul 25 2014 17:39:32 GMT-0400 (EDT)"}]}
<小时/>
var io = require('socket.io').listen(server);

// many lines latter

io.sockets.on('connection', function (socket) {
console.log ("MET0: app.js io.sockets.on() running");

require('./routes/socket.js'); // This should work
});

Broken Output
Express server listening on port 3000
debug - client authorized
info - handshake authorized Hn9It34K2OCT6o8ceinF
**MET0:** app.js io.sockets.on() running
MET1: routes/index.js index()
debug - emitting heartbeat for client Hn9It34K2OCT6o8ceinF
debug - websocket writing 2::
debug - set heartbeat timeout for client Hn9It34K2OCT6o8ceinF
debug - got heartbeat packet
debug - cleared heartbeat timeout for client Hn9It34K2OCT6o8ceinF

最佳答案

io.sockets.on('connection', require('./routes/socket.js'));  // What is this?

本质上,这表示将从 require('./routes/socket.js') 返回的任何内容传递给套接字函数。如果您不熟悉 require 模块在 Node 中的工作方式,/routes/socket.js 可能包含如下内容:

module.exports = function() {
// Do some work
};

这意味着上面的函数将由 require 调用返回。查看 socket.js 内部并查看返回的内容。

关于javascript - 我正在开发的 Express/Socket.io 应用程序中的奇怪 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24966476/

25 4 0
文章推荐: css - 悬停时更改 md-icon 和 md-button
文章推荐: c# - 单元测试 : How to return value asynchronously from mocked interface
文章推荐: javascript - jQuery hide() Then show()