我正在尝试使用node.js
和socket.io
运行聊天脚本。我已经关注the tutorial on the socket.io website并让它在我的本地Windows节点服务器http://localhost:3000
上运行就好了。
现在我将项目转移到了一个使用port 54321
的网络服务器。因为服务器正在运行Apache Web服务器,所以我需要使用.htaccess
文件将请求重定向到node.js服务器:
RewriteEngine On
RewriteRule ^chat/(.*) http://localhost:54321/$1 [P]
所以我的聊天脚本可以在http://www.examle.com/chat/
网站将在浏览器中打开,所有HTML都在那里。但是socket.io功能不起作用。控制台(浏览器,客户端)显示以下错误消息:
GET http://www.example.com/socket.io/?EIO=3&transport=polling&t=1439208895332-0 404 File not found
我在SO上看到过类似的问题,这些问题存在同样的问题。答案主要是关于服务器的index.js中变量的正确顺序。我确实试过这些解决方案,但他们没有帮助。因为脚本在我的本地服务器上工作(在url中没有任何子目录),我认为它可能是不同的东西。奇怪的是客户端socket.io脚本似乎忽略了请求中的子目录/chat/
。如果我尝试使用/chat/
手动打开GET请求中的网址,它会给我回复!
http://www.example.com/chat/socket.io/?EIO=3&transport=polling&t=1439208895332-0
这样可行!
但是如何让socket.io真正为其请求使用正确的路径/ url?
答案 0 :(得分:3)
在客户端上,您可以将路径设置为选项:
var socket = io('http://example.com', {path: '/chat/socket.io'});