当前位置: 首页 > 面试题库 >

Socket.io-在node.js中的单独文件中侦听事件

顾靖
2023-03-14
问题内容

例如,我的想法是:

File1.js

 io.sockets.on('connection', function (socket) {
      socket.on('file1Event', function () {
           //logic
      });
 });

File2.js

 io.sockets.on('connection', function (socket) {
      socket.on('file2Event', function () {
           //logic
      });
 });

这段代码是用于节点服务器的,此代码会出现问题吗?


问题答案:

不,只需使用相同的“ io”对象。

File1.js

exports = module.exports = function(io){
  io.sockets.on('connection', function (socket) {
    socket.on('file1Event', function () {
      console.log('file1Event triggered');
    });
  });
}

File2.js

exports = module.exports = function(io){
  io.sockets.on('connection', function (socket) {
    socket.on('file2Event', function () {
      console.log('file2Event triggered');
    });
  });
}

app.js

var app = require('http').createServer(handler)
  , io = require('socket.io').listen(app)
  , fs = require('fs')
  , file1 = require('./File1')(io)
  , file2 = require('./File2')(io)

app.listen(3000);

function handler (req, res) {
  fs.readFile(__dirname + '/index.html',
  function (err, data) {
    if (err) {
      res.writeHead(500);
      return res.end('Error loading index.html');
    }

    res.writeHead(200);
    res.end(data);
  });
}

index.html

<script src="/socket.io/socket.io.js"></script>
<script>
  var socket = io.connect('http://localhost');
  socket.emit('file1Event');  // 'file1Event triggered' will be shown
  socket.emit('file2Event');  // 'file2Event triggered' will be shown
</script>


 类似资料:
  • 我正在Wildfly 9.0.1的KeyClope中配置一个事件侦听器。我创造了一个。jar有两个类,实现了一个提供者,如KeyClope在他的github示例中解释的那样。 在本例中,keydape人员解释说,有必要注册提供者编辑“standalone/configuration/standalone.xml”并将模块添加到providers元素中。我在标签“subsystem”中对这个定义进行

  • 我有一个控制器类,它需要为列表中的每个项目执行各种异步操作: 对于每个A 播放音频并等待完成 等t秒 对于A的每个子部分B: 播放音频并等待 等待t2秒 当我的方法被激发。我试着回复听众: 但最后我还是无法摆脱内部循环,这让我觉得整个想法都行不通。我已经查看了未来的界面,但这似乎也不是我想要的。 我知道我可以用一堆变量来解决这个问题,以跟踪我在状态流中的位置,但是带有一些框架的循环会更干净。谢谢:

  • 问题内容: 在Node.js中,有什么方法可以监听EventEmitter对象发出的 所有 事件? 例如,你可以做… 我的想法是,我要获取服务器端发出的所有事件,事件数据,并通过websockets连接发送事件,在客户端将其重新设置为事件,然后在客户端对事件进行操作。 问题答案: 如前所述,此行为不在node.js核心中。但是您可以使用hij1nx的EventEmitter2: https://g

  • 问题内容: 当在下拉组件外部单击时,我想关闭下拉菜单。 我怎么做? 问题答案: 在我添加的元素中,像这样: 然后在父母中,我这样做: 该是一个布尔值,当显示在我的情况下,日历和隐藏它。

  • 问题内容: 我正在使用Socket.IO(最新版本1.1.0)与Android应用(客户端)交换消息。我想设置一个超时时间(例如5秒)来检查我的客户端是否仍处于连接状态(我想处理Android应用崩溃时的情况)。此外,当此超时发生时,我想生成一个事件。我想做的事情看起来像这样: 1 /设置超时 2 /处理超时事件: 但是我找不到任何实现超时的实现。 谢谢你的帮助 ! 问题答案: 这不是超时设置所处

  • 问题内容: 我在玩node.js和socket.io-client。我试图连接到一个不存在的通道,以触发事件“ connect_failed”(在https://github.com/LearnBoost/socket.io- client中 指定)。 但是我无法使事件正常运行: 如果我执行将发生这种情况: 如果连接到不存在的通道如何触发错误的任何想法? 更新 :重命名为 问题答案: 我遇到了同样