【问题标题】:socket.io/1/?t= not foundsocket.io/1/?t= 未找到
【发布时间】:2014-07-18 12:57:09
【问题描述】:

我有一个在 localhost:3000 的 rails 4 上运行的 Web 应用程序。我在客户端也有 angularjs。我已将 scoket.io.js 文件放在我的 rails 应用程序公共文件夹中。从我的 angularjs 客户端代码中,我运行此代码

 this.connect = function (endpoint) {

        if(!socket) {
            socket = io.connect(endpoint);
            socket.on('connect', connectHandler);
            socket.on('connect_failed', connectFailedHandler);

            socket.on('message', messageHandler);

            socket.on('disconnect', disconnectHandler);
            socket.on('close', disconnectHandler);
            socket.on('nexus_disconnect', this.disconnect);
        } else {
            socket.socket.connect(endpoint);
        }
    };

我的浏览器控制台出现如下错误。

http://localhost:3000/socket.io/1/?t=1405687049255 404 (Not Found) 

socket.io 是否需要 Rails 服务器以外的任何服务器?

【问题讨论】:

    标签: ruby-on-rails angularjs socket.io


    【解决方案1】:

    是的,您必须设置Node.js 服务器。

    Socket.IO服务器有几种其他语言的实现,但是好像没有一个用Ruby写的。

    【讨论】:

    • 我已经在我的 Mac 上安装了 Node.js。 Rails 服务器也在 3000 端口上运行。当我启动 node.js 服务器时,找不到我的 socket.io.js 文件。因为它是通过 node.js 服务器链接获取的。我如何在不与 Rails 服务器冲突的情况下启动其服务器。
    • @Lalit 为了避免冲突,你只需要让 Rails 和 Node 监听不同的端口
    • 我收到此错误“XMLHttpRequest 无法加载 localhost:3002/socket.io/1/?t=1405946169314。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此不允许访问源“localhost:3000” 。”在 3002 端口和 rails 服务器 3000 端口上运行 node.js 服务器时。
    • @Lalit 尝试导航到 localhost:3002/socket.io 。您在浏览器中看到了什么?如果您看到类似{"code":0,"message":"Transport unknown"} 的内容,则说明 Socket.IO 能够响应,并且可能由于 Socket.IO 内部设置而发生错误。否则 Socket.IO 就无法拦截请求。
    猜你喜欢
    • 1970-01-01
    • 2015-10-10
    • 2015-10-03
    • 1970-01-01
    • 2014-01-16
    • 2017-02-25
    • 2017-09-04
    • 1970-01-01
    • 2018-03-27
    相关资源
    最近更新 更多