0

我正在运行该应用程序,但它没有找到 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?

4

3 回答 3

1

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

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

于 2013-01-16T15:50:08.327 回答
0

Heroku 开发中心有关于在 Heroku 上使用 socket.io 的指南。特别是,您需要以下配置:

// assuming io is the Socket.IO server object
io.configure(function () { 
  io.set("transports", ["xhr-polling"]); 
  io.set("polling duration", 10); 
});
于 2013-01-16T15:19:00.747 回答
-1

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

于 2013-01-16T21:08:22.747 回答