找不到/socket.io/?EIO=3。 404

时间:2018-03-31 19:30:26

标签: node.js express socket.io

我正在使用node js express和socket.io以及apache作为我的反向代理。以下是我的反向代理配置。

ProxyPass /chatApp http://localhost:3000/
ProxyPassReverse /chatApp http://localhost:3000/

因此,我的应用程序将由https://server.com/chatApp访问。下面是我的html中如何定义套接字。

var socket = io("https://server.com/chatApp")

浏览器抛出以下错误。

GET https://server.com/socket.io/?EIO=3&transport=polling&t=M9zVwUq 404 (Not Found)

但是,当我在浏览器中点击以下网址时,我会得到一些结果。

https://server.com/chatApp/socket.io/?EIO=3&transport=polling&t=M9zVwUq

即使我在html中提到 / chatApp (定义套接字变量时),我的应用程序也没有调用 server.com/chatApp/socket.io/?EIO .. 。 ..它在URL中跳过chatApp,只是调用 server.com/socket.io/?EIO ...

我已经尝试过这个post的解决方案。没有运气。

1 个答案:

答案 0 :(得分:1)

在socket.io的io()界面中,您在那里传递的路径不会用作URL上的路径。它用作您要连接的命名空间。如果要特定自定义路径,则需要使用单独的参数:

var socket = io("https://server.com", {path: "/chatApp/socket.io"});

如果仍然没有提供您想要的内容,请检查socket.io正在使用的URL(查看Chrome调试器的网络选项卡以查看它),然后相应地调整路径参数。 / p>

这是path选项的socket.io文档参考:https://github.com/socketio/socket.io-client/blob/master/docs/API.md#with-custom-path

请注意,路径的/socket.io部分是必需的,因此服务器可以正确识别socket.io请求。