使用Socket.io的Node.js应用程序在OpenShift托pipe上提供了“意外的响应代码:400”

我有一个本地运行良好的Node.js应用程序,但是当我把它推到OpenShift时,它在开发控制台中给了我这个错误:

WebSocket连接到'ws://myapp-mydomain.rhcloud.com/socket.io/?EIO = 3&transport = websocket&sid = mpKjro8KjQ5dIg0GAAAE'失败:WebSocket握手期间出错:意外的响应代码:400

这是一个小型的多人游戏,你和任何其他连接的玩家都可以四处移动,并可以看到对方的移动等。我使用Node和socket.io来获取玩家位置,并将新坐标发送给其他玩家。当我在OpenShift上托pipe时,它给了我上面的错误。 奇怪的是,它几乎可以工作,即你可以看到其他玩家四处移动,除非它非常缓慢和缓慢。 同样的应用程序在Scalingo托pipe上工作得很好,所以它必须是一个OpenShift的东西。

这是我启动socket.io的客户端代码:

<script src="/socket.io/socket.io.js"></script> <script> var socket = io(); </script> 

和服务器:

 var express = require('express'); var app = express(); var http = require('http').Server(app); var io = require('socket.io')(http); app.get('/', function(req, res){ res.sendFile('index.html'); }); this.ipaddress = process.env.OPENSHIFT_NODEJS_IP; this.port = process.env.OPENSHIFT_NODEJS_PORT || 8000; http.listen( port, ipaddress, function(){ console.log('listening on:' + port); }); 

谢谢Apsillers,改变这条路线的窍门是:

 var socket = io();//OLD var socket = new io("ws://myapp-mydomain.rhcloud.com:8000/"); //NEW