【发布时间】: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