-
Notifications
You must be signed in to change notification settings - Fork 10.1k
Closed
Labels
unable to reproduceWe were unable to reproduce the issueWe were unable to reproduce the issue
Milestone
Description
I have faced a strange issue with Socket io dynamic namespace, Kubernetes. Client connected to socketio server but sometimes connection events never trigger the namespace instance.
I'm experiencing intermittent issue when using a regex expression for dynamic namespace.
But, In case:
- Running a single socket.io node.
- Or only one namespace
- Or without namespace
=> it works normally !!!
The code is working fine most of the time. It only failed when the socket.io client failed to trigger the namespace connect event.
Note:
- I have only one the code snippet for namespace instance in my app.
- This issue occurs when running on multiple node deployed in Kubernetes with many pods.
Package
"socket.io": "^4.1.1",
"socket.io-client": "^4.1.1",
Server code:
const tenantWorkspaces: socketio.Namespace = chatServer.io.of(/^\/\w+$/);
tenantWorkspaces.on('connection', async (socket: socketio.Socket) => {
const tenantWorkspace = socket.nsp;
console.log('========children namespace======');
socket.on('clientEmit', (data) => {
console.log('clientEmit', data);
});
tenantWorkspace.to(socket.id).emit('serverEmit', {data: 'server emitted !!!'});
workspaceId = isString(socket.handshake.query.workspace_id) ? socket.handshake.query.workspace_id : null;
console.log(`workspace: ${workspaceId}, contact: ${contactId} connected!`); // debug
};
Client code
const options = {
query: {
'workspace_id': window.LINEBASE_WORKSPACE_ID || '',
},
resource: "socket.io",
transports: ['websocket'],
upgrade: false,
};
socket = io(`${socketUrl}/${namespace}`, options);
socket.on("connect", () => {
console.log('socket connected: ' + socket.connected); // true
console.log('socketID:', socket.id);
});
socket.on('serverEmit', (data) => {
console.log(`================ Connect namespace ${namespace} successfully ==============`, data);
})
I spent almost two weeks to find the solution but still have no result.
Is there any solution for this issue ? My application has many namespaces so I needs using dynamic namespace instead of hard code.
Metadata
Metadata
Assignees
Labels
unable to reproduceWe were unable to reproduce the issueWe were unable to reproduce the issue