【问题标题】:Emitting inside express route (using socket.io-client)在快速路由内部发射(使用 socket.io-client)
【发布时间】:2020-12-03 11:08:38
【问题描述】:

我最近开始重构一些代码,将我之前制作的前端和后端分离为一个组合服务。

我现在遇到了一个问题,我需要 Web 服务器向数据服务器发送(验证后)。我之前通过在添加此代码后从 express 路由内部调用 emit 来管理这个

var io = require('socket.io')(server);
app.io = io;
app.use(function(req, res, next) {
        req.io = socket;
        next();
});

// Then inside of the route

app.post('/make', function(request, response) {
        if (request.session.loggedin = true) {
                var sio = request.io;

                var to = request.body.to;
                var amt = request.body.amt;
                var from = request.body.from;
                if (to.length > 0 && amt != 0) {
                        if (amt <= request.session.balance) {
                          sio.emit('send-transactions', {"to": to, "from": from, "amt": amt});

现在这些是分开的,Web 服务器只是作为客户端连接(使用 socket.io-client),所以我似乎无法让它工作。

我正在使用,

var socket = require('socket.io-client')('wss://ip:port', {secure:true,rejectUnauthorized:false, reconnect:true});

我尝试将“io”的所有引用更改为“socket”,因为我的变量不同,但我无法确定是否是客户端库无法这样做。

Tl;dr - 我正在尝试从 Web 服务器(技术上是客户端)发送到后端(socket.io 服务器)以触发该事件,然后该事件将广播给所有客户端。

【问题讨论】:

  • 我知道你在做什么,但我不知道你是怎么做的。能否提供当前正在使用的代理(后端服务器)和客户端代码(Web 服务器)上的 socket-io 代码?
  • 当我回顾我的后端代码为您提供一些上下文时,我注意到路由“send-transactions”仅在客户端上配置,而在服务器端它是“添加“所以它从未被解雇!我已经回去测试了,我现在可以看到在我的服务器端发生的事件,虽然你可能没有花时间写一些虚拟代码,但你仍然帮我解决了哈哈
  • 编辑您的问题或自己回答,以便为未来的用户关闭此问题

标签: javascript node.js express socket.io


【解决方案1】:

只是想关闭这个,所以这里是解决方案:

由于我的路由以前是供服务器发送给所有客户端的,所以在服务器端使用与客户端相同的路由不会被触发。我只需要更改到服务器端的路由,现在完整的序列已经完成并发送到该路由,然后发送到所有客户端

【讨论】:

    猜你喜欢
    • 2013-09-22
    • 1970-01-01
    • 2019-10-17
    • 1970-01-01
    • 2018-10-06
    • 2013-08-09
    • 1970-01-01
    • 1970-01-01
    • 2018-05-25
    相关资源
    最近更新 更多