【发布时间】:2015-11-02 08:43:01
【问题描述】:
我正在尝试使用node.js 和socket.io 运行聊天脚本。我已经关注 the tutorial on the socket.io website 并让它在我的本地 Windows 节点服务器 http://localhost:3000 上运行就好了。
现在我将项目转移到一个网络服务器上,它将使用port 54321。因为服务器运行的是 Apache 网络服务器,所以我需要使用 .htaccessfile 将请求重定向到 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 上看到了类似的问题,它们具有相同的 404 问题。答案主要是关于服务器 index.js 中变量的正确顺序。为了确定,我尝试了这些解决方案,但它们没有帮助。因为该脚本确实可以在我的本地服务器上运行(url 中没有任何子目录),所以我认为它可能有所不同。奇怪的是,客户端 socket.io 脚本似乎忽略了请求中的子目录/chat/。如果我尝试使用 /chat/ 手动打开来自 GET 请求的 URL,它确实会给我回复!
http://www.example.com/chat/socket.io/?EIO=3&transport=polling&t=1439208895332-0
这行得通!
但是我怎样才能让 socket.io 实际使用正确的路径/url 来处理它的请求呢?
【问题讨论】:
标签: node.js .htaccess url-rewriting socket.io subdirectory