io.sockets.emit()无法在生产环境中运行

时间:2020-09-29 12:01:54

标签: node.js sockets socket.io

我正在尝试像这样在生产环境中设置套接字:

客户端:

import openSocket from 'socket.io-client';

function handleSomething() {
    let socketServer = 'https://staging.app.xxx.eu:9999';
  
    const socket = openSocket(socketServer);

    socket.on('calendlyHook', () => {
        console.log("*** HERE");
        ...
        socket.emit('closeSocket');
        socket.close();
        socket.removeAllListeners();
    });
}

服务器:

const app = require('express')();
const http = require('http').createServer(app);
const io = require('socket.io')(http);

function openSocket() {
    io.close();
    io.set('origins', '*:*');
    io.on('connection', (client) => {
        console.log('Socket connected');
        client.on('closeSocket', () => {
            io.close();
            io.removeAllListeners();
            console.log('Socket closed');
        });
    });

    const port = 9999;
    io.listen(port);
    console.log('*** listening on port ', port);
}

然后在服务器端,另一个函数尝试以下操作:

io.emit('calendlyHook');

io.sockets.emit('calendlyHook');

我在生产中遇到了几个问题(在本地主机上都没有发生):

  1. console.log('***正在监听端口',端口)工作正常
  2. console.log(“套接字已连接”)没有发生
  3. io.emit('calendlyHook')或io.sockets.emit('calendlyHook')没有做任何事情

我没有在该URL上设置任何Web服务器代理。

这是怎么了?谢谢!

0 个答案:

没有答案