我运行了应用程序,它找不到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?
答案 0 :(得分:1)
Heroku要求您的应用程序侦听Heroku选择的端口。 Heroku将通过PORT
环境变量在启动应用程序时告诉您的应用程序此端口。如果您在任何其他端口上侦听,Heroku将忽略它并在60秒后终止您的应用程序。
您的用户的浏览器仍将使用端口80进行HTTP流量,将443用于HTTPS流量。 Heroku的路由层位于用户浏览器和应用程序之间,它将HTTP流量通过Heroku为您的应用程序指定的端口发送到您的应用程序。
答案 1 :(得分:0)
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);
});
答案 2 :(得分:-1)
这是因为Heroku目前不支持Websockets(据我所知)为了使用socket.io,你需要强制它回退到xhr长轮询方法。