【发布时间】:2019-12-25 07:29:19
【问题描述】:
我创建一个服务器并在其上绑定 socket.io
const express = require('express');
var io = require('socket.io');
var app = express();
app.get('/', (req, res) => {
res.sendFile(__dirname + '/index.html');
})
var server = require('http').createServer(app);
io = io.listen(server);
io.on('connection', function(socket){
console.log('user connected', socket.id)
socket.on('chat message', function(msg){
console.log(socket.id, 'message: ' + msg);
});
});
server.listen(9999)
当我在 docker 上部署 1 个实例时没问题(我使用 docker swarm 和 docker stack), 而如果我设置部署副本
这是我的 compose.yml
version: '3'
services:
web:
image: socket:v2
ports:
- "5000:9999"
command: node index.js
deploy:
replicas: 2
我遇到一些问题,当发送消息到服务器时, server1 显示已连接,并显示收到消息, 但下次我发送时,server2 显示收到消息
我怎样才能让它成为“我连接的服务器就是我发送消息的服务器”?
【问题讨论】:
-
我认为你需要应用和配置Sticky session,你可以阅读这个stackoverflow.com/questions/10494431/…
标签: docker websocket socket.io