首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >io.sockets.emit可以工作,但io.sockets.on不能

io.sockets.emit可以工作,但io.sockets.on不能
EN

Stack Overflow用户
提问于 2018-04-04 04:27:11
回答 2查看 802关注 0票数 1

我必须使用带有ExpressJS路由的Socket.IO。我可以向客户端发出事件,但无法侦听从客户端发出的事件。当我不得不在Express路由中使用套接字时,就会出现这个问题。

我的server.js看起来是这样的:(这里的emit命令有效,但io.sockets.on无效)。我检查过有类似问题的问题,但仍然没有得到明确的答案。

代码语言:javascript
复制
var express = require('express');
var app = express();
var server = app.listen(3000);
var io = socketio(server);
app.set('socketio', io);
app.post('/deploy', function(request, response) {
  var io = request.app.get('socketio');
  var dapp = "some data";
  io.sockets.emit('deploy', dapp);
  io.sockets.on('deploy_result', (result) => {
    console.log(result);
  });
})
EN

回答 2

Stack Overflow用户

发布于 2018-04-04 19:36:34

io.sockets.on (或io.on)不会让你监听所有事件,它只是针对“连接”事件。您必须将侦听器附加到每个socket,以便侦听所有事件,如下所示:

代码语言:javascript
复制
io.on('connection', function (socket) {
  socket.on('deploy_result', (result) => {
    console.log(result)
  })
})

此外,您似乎正在尝试获取emit的“确认”,在这种情况下,已经存在一种更好的方法-确认回调,只需传递一个回调方法作为额外的参数(在数据之后):

  • server.js

some(‘connection’,function (io.on){ socket.emit('deploy',{some:'data'},function acknowledgement_callback (result) { console.log(result) }) io.on

socket.on('deploy',(data,acknowledgement_callback) => { //使用data做一些事情//然后调用任何结果的回调: acknowledgement_callback('result') //这将在服务器端触发上面的"acknowledgement_callback“})

票数 1
EN

Stack Overflow用户

发布于 2018-04-04 06:20:03

你将需要安装express和socket.io,例如。在您在代码中可以看到的文件所在的目录中,然后适当地引用这些链接

我已经更新了你的代码,所以express和socket的发布可以正常工作。现在剩下的就是确保你的应用程序按照你喜欢的方式运行了。以下是有关如何安装express https://www.npmjs.com/package/express的链接

代码语言:javascript
复制
var socket  = require( './socket.io' );
var express=require('./express');
var app=express();
var server  = require('http').createServer(app);
var io      = socket.listen( server );
var port    = process.env.PORT || 3000;

app.post('/deploy', function(request, response) {
  var io = request.app.get('socketio');
  var dapp="some data";
  io.sockets.emit('deploy',dapp);
  io.sockets.on('deploy_result', (result)=>{
    console.log(result);
  });
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49638610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档