node.js - 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');
我在生产中有几个问题(在本地主机上都没有发生):
- console.log('*** 监听端口 ', port) 工作正常
- console.log('Socket connected') 没有发生
- io.emit('calendlyHook') 或 io.sockets.emit('calendlyHook') 没有做任何事情
我没有在该 URL 上设置任何 Web 服务器代理。
这里有什么问题?谢谢!