在将Docker用于节点应用程序时无法与Websocket连接

问题描述 投票:0回答:1

不是docker的新手,并希望将它用于带有Express,SQLite3和websockets的此Node应用程序。其他一切工作正常,但我无法将客户端连接到服务器Websocket。

我进行了搜索,发现我必须更改客户端代码,并且在下面尝试了一些其他操作。我在客户端代码中包括了与每次尝试相关的错误。

serverModel.js:

var WebSocketServer = require("ws").Server,
  wss = new WebSocketServer({ port: 10707 });

客户端(controller.js)

  /* Connect to WebSocket */
  // socket = new WebSocket("ws://172.17.0.16:10707"); //
  // socket = new WebSocket("ws://192.168.65.0:10707"); //Error in connection establishment: net::ERR_CONNECTION_TIMED_OUT
  // socket = new WebSocket("ws://localhost:10707"); //failed: Connection closed before receiving a handshake response
  // socket = new WebSocket("ws://0.0.0.0:10707"); // failed: Connection closed before receiving a handshake response
  socket = new WebSocket("ws://172.17.0.1:10707"); // Error in connection establishment: net::ERR_CONNECTION_TIMED_OUT

Docker文件

FROM node:12

COPY . /App
WORKDIR /App

RUN npm install

EXPOSE 10220
EXPOSE 10707

RUN node serverModel.js &
CMD [ "node", "app.js" ]

我运行docker run -p 10220:10220 -p 10707:10707 -d myname/node-web-app16

node.js docker websocket dockerfile
1个回答
0
投票

希望对您有帮助...首先,我看到您在这些行的Dockerfile上有一些错误:

RUN node serverModel.js &
CMD [ "node", "app.js" ]

不能同时使用“&”将RUN指令与CMD一起使用。

第二,请记住,指令RUN仅用于您要安装某些东西或执行一些指令以配置工具(如创建目录或创建文件的配置)的地方。

最后,您的主文件是serverModel.js还是app.js?如果是serverModel.js,则需要在CMD指令中将app.js替换为serverModel.js,然后删除前一条指令(RUN node serverModel.js &)。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.