首页 > 解决方案 > io.sockets.emit() 在生产中不起作用

问题描述

我正在尝试在生产中设置一个套接字,如下所示:

客户 :

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('*** 监听端口 ', port) 工作正常
  2. console.log('Socket connected') 没有发生
  3. io.emit('calendlyHook') 或 io.sockets.emit('calendlyHook') 没有做任何事情

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

这里有什么问题?谢谢!

标签: node.jssocketssocket.io

解决方案


推荐阅读