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/node.js?

部署后 Socket.io 不工作 - 抛出错误 - 405(不允许)

Android Node.js Socket.io 未连接

尝试在专用服务器上实现 Node.js 和 Socket.io

Node.js、多线程和 Socket.io

node.js、socket.io 和 SSL