Socket io 和 Node 在本地工作,但不能在 heroku 上工作
Posted
技术标签:
【中文标题】Socket io 和 Node 在本地工作,但不能在 heroku 上工作【英文标题】:Socket io and Node works locally but not working on heroku 【发布时间】:2014-10-06 01:37:47 【问题描述】:代码在本地工作。当我将它推送到 heroku 时会出现问题。
我确定端口是正确的。我不知道问题是什么。我怀疑这是客户端代码的问题。我尝试将其更改为 https:// 而不是 http:// 但这使得它在本地和 heroku 上停止工作。
FF 错误:
Firefox can't establish a connection to the server at ws://localhost/socket.io/?EIO=2&transport=websocket.
Chrome 上的错误:
WebSocket connection to 'ws://localhost/socket.io/?EIO=2&transport=websocket' failed: Error during WebSocket handshake: Unexpected response code: 404
//on the client side
socket = io.connect("http://localhost", port: PORT, transports: ["websocket"]);
//on the server side
var port = Number(process.env.PORT || 4000);
var express = require("express");
var logfmt = require("logfmt");
var app = express();
app.set('views', __dirname + '/views');
var server = require('http').createServer(app)
io = require("socket.io").listen(server);
io.set("transports", ["websocket"]);
io.set("polling duration", 10)
https://bitbucket.org/hassanshaikley/amara-game/src/27b720f463f18b3ca1864fc1028d86e72928b126/scripts/game.js?at=master
如果我缺少详细信息,请告诉我。我有点难过。
【问题讨论】:
【参考方案1】:首先,如果您希望您的客户端连接到您的 heroku 应用程序,您应该使用您的 heroku 应用程序主机而不是 localhost。
var host = location.origin;
io.connect(host, port: PORT, transports: ["websocket"]);
【讨论】:
以上是关于Socket io 和 Node 在本地工作,但不能在 heroku 上工作的主要内容,如果未能解决你的问题,请参考以下文章
部署后 Socket.io 不工作 - 抛出错误 - 405(不允许)