【问题标题】:socket.io ignoring url path seems to cause polling GET 404 errorsocket.io 忽略 url 路径似乎导致轮询 GET 404 错误
【发布时间】:2015-11-02 08:43:01
【问题描述】:

我正在尝试使用node.jssocket.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


    【解决方案1】:

    在客户端,您可以将路径设置为选项:

    var socket = io('http://example.com', {path: '/chat/socket.io'});
    

    【讨论】:

    • 那(基本上)确实是骗人的。不得不使用io.connect() 而不仅仅是io()。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2017-03-04
    • 1970-01-01
    • 2015-12-29
    • 1970-01-01
    • 1970-01-01
    • 2021-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多