我知道这里已经提出了一些类似的问题,但是提出的解决方案似乎都没有。 (我将在下面发布相关答案)
我无法获得一个简单的websocket应用程序来处理openshift。该应用程序本身在本地运行 [编辑:我使用socket.io]
相关代码:
服务器:
var express = require('express');
var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io').listen(server);
server.listen(process.env.OPENSHIFT_NODEJS_PORT, process.env.OPENSHIFT_NODEJS_IP);
io.on('connection', function (socket) {
…
});
的index.html
<script src="/socket.io/socket.io.js"></script>
Client.js
this.socket = io.connect('http://app-domain.rhcloud.com:8000', {'forceNew':true });
结果:
我试过的东西
使用端口80而不是8000(在客户端上)
结果: WebSocket连接到&#39; ws://app-domain.rhcloud.com/socket.io/?EIO = 2&amp; transport = websocket&amp; sid = rsqAz33O_aYSFfN3AAAD&#39;失败:WebSocket握手期间出错:意外的响应代码:400
交换 server.list(... 和 var io = require(&#39; ...
没有结果
使用服务器的IP地址而不是http://app-domain.rhcloud.com
没有结果
类似问题
以下问题涉及同一问题,但到目前为止,所提出的解决方案都没有起作用
Socket.io and node on OpenShift
OpenShift NodeJS deployment : socket.io index.html port assignment, etc
unable to deploy nodejs socket io application on openshift
Can't get socket.io and nodejs running with OpenShift
Socket.io.js returns 404 on OpenShift
我还克隆了一些socket.io/openshift的github示例,但所有这些都处理同样的问题。
要么我做了一些完全错误的事情,要么在openshift上发生了一些有趣的事情。
提前致谢。
答案 0 :(得分:1)
我终于破解了它。显然,通过硬编码服务器端的传输配置,它可以工作。
var io = require('socket.io', {
transports: ['websocket']
})(http);
希望这可以帮助将来的某个人。
答案 1 :(得分:0)
当我在openshift上使用socket.io创建一个简单的聊天应用程序时遇到了同样的问题。我在Stack Overflow上看了很多评论。最后,我换了两个地方。
首先,添加:
ExtendedNav
其次,在需要socket.io模块时添加一个选项。
$('.ExtendedNav').toggleClass('hidden')