我正在使用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的解决方案。没有运气。
答案 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请求。