【问题标题】:Socket.io 404es on Heroku on every port I tried我尝试过的每个端口上的 Heroku 上的 Socket.io 404es
【发布时间】:2013-01-15 13:13:07
【问题描述】:

我的应用程序正在运行,但它没有找到 socket.io 并给我 404。

这是客户:

<script src="http://game-test-1.herokuapp.com/socket.io/socket.io.js"></script>
<script>var socket = io.connect('http://game-test-1.herokuapp.com');</script>

这是服务器:

 var express = require('express'),
    routes = require('./routes'),
    user = require('./routes/user'),
    http = require('http'),
    path = require('path'),
    express = require("express"),
    app = express(),
    server = http.createServer(app),
    io = require('socket.io').listen(server);

server.listen(80);

我尝试更改端口并执行 http://game-test-1.herokuapp.com:81/... 但这给了我一个错误

如何正确链接socket.io?

【问题讨论】:

    标签: heroku socket.io


    【解决方案1】:

    Heroku 要求您的应用程序侦听 Heroku 选择的端口。 Heroku 会在启动您的应用程序时通过PORT 环境变量告诉您​​的应用程序这个端口。如果您监听任何其他端口,Heroku 将忽略它并在 60 秒后终止您的应用程序。

    您用户的浏览器仍将端口 80 用于 HTTP 流量,将 443 端口用于 HTTPS 流量。 Heroku 的路由层位于用户浏览器和您的应用程序之间,它将通过 Heroku 为您的应用程序指定的端口将 HTTP 流量发送到您的应用程序。

    【讨论】:

      【解决方案2】:

      Heroku 开发中心有一个guide on using socket.io on Heroku。特别是,您需要以下配置:

      // assuming io is the Socket.IO server object
      io.configure(function () { 
        io.set("transports", ["xhr-polling"]); 
        io.set("polling duration", 10); 
      });
      

      【讨论】:

        【解决方案3】:

        这是因为 Heroku 目前不支持 Websockets(据我所知)为了使用 socket.io,您需要强制它回退到 xhr 长轮询方法。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-07-11
          • 2014-06-27
          • 2011-12-26
          • 2016-11-06
          • 1970-01-01
          • 1970-01-01
          • 2012-07-25
          • 1970-01-01
          相关资源
          最近更新 更多