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)
这是我的Compose.yml
version: '3'
services:
web:
image: socket:v2
ports:
- "5000:9999"
command: node index.js
deploy:
replicas: 2
我遇到一些问题,当发送消息到服务器时,server1显示连接,并显示GET消息,但下次发送时,server2显示GET消息
如何使其成为“我连接的服务器就是我发送消息到的服务器”?
可以使用jwilder/nginx-proxy。它是使用docker-gen的Docker容器的自动Nginx代理。
用法
运行它:
$ docker run -d -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock:ro jwilder/nginx-proxy
$ docker run -e VIRTUAL_HOST=foo.bar.com
version: '2'
services:
nginx-proxy:
image: jwilder/nginx-proxy
ports:
- "80:80"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
whoami:
image: jwilder/whoami
environment:
- VIRTUAL_HOST=whoami.local
这里jwilder/whoami
将由jwilder/nginx-proxy
代理为其指定的virtual_host
您可以在这里和这里阅读更多关于jwilder/nginx-proxy的信息
此外,您还可以检查这个docker-compose-scale-wit-sticky-sessions
docker-compose up
curl -H "Host: whoami.local" localhost
现在,是时候扩大规模了
docker-compose scale whoami=3
现在查看来自不同容器的屏幕截图响应。
要处理粘滞会话,可以使用TPCWang的fork允许您在容器级别上使用ip_hash
指令来启用粘滞会话。
下面的示例演示如何使用客户端IP哈希来配置粘性会话。这不像cookie那样灵活或一致,但为一些不能使用其他方法的应用程序提供了变通方法。当使用IP散列时,请重新配置互锁代理以使用主机模式网络,因为默认的入口网络模式使用SNAT,这将模糊客户端IP地址。
创建覆盖网络,以便隔离和安全服务通信:
$> docker network create -d overlay demo
使用cookie创建一个服务,用于使用IP散列的粘性会话:
$> docker service create \
--name demo \
--network demo \
--detach=false \
--replicas=5 \
--label com.docker.lb.hosts=demo.local \
--label com.docker.lb.port=8080 \
--label com.docker.lb.ip_hash=true \
--env METADATA="demo-sticky" \
ehazlett/docker-demo
我需要部署同一个LAMP(或LEMP)应用程序的许多实例: 每个实例都可以通过前端LoadBalancer/Proxy从子域访问 每个实例必须有自己的db数据和文件数据。 可以监视每个实例 可以为每个应用程序实例设置内存限制/cpu 易于自动部署新webapp实例 环境可以很容易地进行测试和开发。 应用程序要求: null null 示例: > 为Wordpress应用程序提供了一个多功能容器:h
问题内容: 我需要部署同一LAMP(或LEMP)应用程序的许多实例: 每个实例都可以使用前端负载均衡器/代理从一个子域访问 每个实例必须具有自己的数据库数据和文件数据。 每个实例都可能受到监视 内存限制/ CPU可能会针对每个应用实例设置 易于自动化新的Webapp实例的部署 测试和开发环境可能很容易重现。 申请要求: dameon过程(,,) 二进制文件(,,…) 其他系统特定的库和配置 阅读D
我正在使用socket.io构建一个应用程序 我正在使用Socket.io的房间功能,用户可以订阅5个“主题”。该主题中广播的每个消息都有一个消息类型,其中有100个。用户将只接收他们允许接收的类型的消息,这可能在30到70之间。 我的问题是:为每个主题+消息类型组合创建一个房间是否可行,这将是5×100个房间?socket.io会像这样表现良好吗?还是有更好的方法来解决这个问题?向每个单独的套接
我是JPA的新手,有一个关于如何处理实体的问题。在我的例子中,我有3个实体:用户、组和事件。 一个事件总是属于一个组。这意味着有一个OneToMulti-Relation。一个用户可以订阅多个组,这意味着有一个ManyToMulti-Relation。现在我遇到麻烦的部分。一个用户也可以订阅多个事件,这意味着也有一个ManyToMulti-Relation。 现在我的问题是。我如何在我的组实体中列
问题内容: 我试图了解哪些是应用程序的“物理”限制。 在客户端: 在服务器端: 在OSX中达到文件限制(256)时,统计信息如下 让我感到困惑的是: 如果我强行关闭连接(这是我想对客户端执行的操作,为什么我仍在使用文件句柄(因此达到文件限制),请执行以下操作:编辑:添加延迟似乎使服务器可以保持呼吸并且永远不会达到文件限制)? 有没有一种方法可以完全关闭套接字,以便可以确定很少达到文件限制(我知道可
问题内容: 尽管我有很多编写代码的经验。我真的没有太多的部署经验。我正在编写一个项目,该项目使用mongodb进行持久化,使用redis进行元缓存,并使用其播放页面。我正在决定是否要购买专用服务器,还是要从亚马逊/ linode购买多个小型/中型实例(每个,mongo,redis,play一次)。我想到了以下折衷方案,我想知道是否有人可以添加到列表中或提供进一步的见解。我倾向于(b)从linode