我有一个我无法解决的问题。 我使用 socket.io 或 WebSockets Node js 库在 openshift 盒式磁带上实现了 Node js WebSockets 服务器。 使用它们中的任何一个,结果都是相同的。
在同一个 openshift 平台上运行的 Node js 客户端一切正常。
当客户端在我的本地电脑上移动时,客户端连接并突然断开连接,出现 1011 内部服务器错误。
我尝试使用其他知名客户端,例如 WebSockets.Org 上的 echo 服务或 jsfiddle但是结果是一样的,连接上突然断开。
不知道为什么。 有人能够从远程连接到 openshift WebSockets 服务器吗? 服务器最小且简单,在本地运行正常。
这是我用作服务器的代码:
var ipaddress = process.env.OPENSHIFT_NODEJS_IP || "127.0.0.1";
var port = 8000;
var app = require("express");
var server = require("http").Server(app);
var io = require("socket.io")(server);
var handleClient = function (socket) {
// we've got a client connection
socket.sendUTF("hello");
console.log("connect");
};
io.on("connection", handleClient);
server.listen(port, ipaddress);
这是套接字端点: ws://js-camillorh.rhcloud.com:8000
谢谢!
评论后将代码更新为:
var ipaddress = process.env.OPENSHIFT_NODEJS_IP || "127.0.0.1";
var port = process.env.OPENSHIFT_NODEJS_PORT || 8080;
var app = require("express");
var server = require("http").Server(app);
var io = require("socket.io")(server);
var handleClient = function (socket) {
socket.sendUTF("hello");
console.log("connect");
};
io.on("connection", handleClient);
console.log("listen: "+ipaddress+" "+port);
server.listen(port, ipaddress);
日志文件是这样的:
DEBUG: Sending SIGTERM to child...
DEBUG: Running node-supervisor with
DEBUG: program 'server.js'
DEBUG: --watch '/var/lib/openshift/5551a336e0b8cd4ea50000db/app-root/data/.nodewatch'
DEBUG: --ignore 'undefined'
DEBUG: --extensions 'node|js|coffee'
DEBUG: --exec 'node'
DEBUG: Starting child process with 'node server.js'
DEBUG: Watching directory '/var/lib/openshift/5551a336e0b8cd4ea50000db/app-root/data/.nodewatch' for changes.
listen: 127.13.35.129 8080
最佳答案
您绑定(bind)到错误的端口,您需要像这样绑定(bind)到 8080:
var port = process.env.OPENSHIFT_NODEJS_PORT || 8080;
然后您仍然可以使用此 url 访问您的应用程序:
ws://js-camillorh.rhcloud.com:8000
或用于安全的 websockets
wss://js-camillorh.rhcloud.com:8443
关于node.js - OpenShift 上的 WebSockets 不适用于远程客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30627235/