Tre*_*ree 2 websocket socket.io docker docker-compose
我有一个在端口 4000 上提供 http 服务的容器。它附加了套接字服务器
docker-撰写:
dashboard-server:
image: enginetonic:compose1.2
container_name: dashboard-server
command: node src/service/endpoint/dashboard/dashboard-server/dashboard-server.js
restart: on-failure
ports:
- 4000:4000
integration-test:
image: enginetonic:compose1.2
container_name: integration-test
testRegex "(/integration/.*|(\\.|/)(integration))\\.jsx?$$"
tty: true
Run Code Online (Sandbox Code Playgroud)
服务器:
const http = require('http').createServer(handler)
const io = Io(http)
io.on('connection', socket => {
logger.debug('socket connected')
})
io.use((socket, next) => {
logger.debug('socket connection established.')
})
http.listen(4000, '127.0.0.1', () => {
console.log(
`Server running at http://127.0.0.1:4000/`
)
Run Code Online (Sandbox Code Playgroud)
泊坞窗中的输出:
Server running at http://127.0.0.1:4000/
https is listening: true
现在,我尝试从另一个容器连接到该服务器,如下所示:
文件:
const url = `ws://dashboard-server:4000`
const ioc = IoC.connect(url)
ioc.on('error', error => {
console.log(error.message)
})
ioc.on('connect', res => {
console.log('connect')
})
ioc.on('connect_error', (error) => {
console.log(error.message)
})
Run Code Online (Sandbox Code Playgroud)
输出:
xhr poll error
当我在终端本地运行两者时,我得到正确的响应
{"message":"socket connection established","level":"debug"}
为什么套接字不在容器内部建立连接,而是在本地建立连接?我究竟做错了什么?
编辑:仅显示部分文件以方便阅读。套接字在本地计算机上正常连接,并在单独的终端中生成两个文件
您需要链接 docker 容器并按名称引用它们,而不是127.0.0.1. https://docs.docker.com/compose/networking提供了更多文档。您还需要侦听“0.0.0.0”,以便接受 Docker 网络上的连接。
我在您的撰写文件中只看到一个容器。如果您尝试从外部docker连接到 docker 容器,则必须公开一个端口。同一个参考文献向您展示了如何操作。
http.listen(4000, '127.0.0.1', () => {
Run Code Online (Sandbox Code Playgroud)
应该成为
http.listen(4000, '0.0.0.0', () => {
Run Code Online (Sandbox Code Playgroud)
这样服务器就会监听所有地址,包括 docker 在 docker 网络上自动分配的地址。
然后客户端必须通过 docker compose 中给出的名称引用服务器,所以
const url = `ws://127.0.0.1:4000`
Run Code Online (Sandbox Code Playgroud)
变成
const url = `ws://dashboard-server:4000`
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9642 次 |
| 最近记录: |