node.js - OpenShift 上的 WebSockets 不适用于远程客户端

标签 node.js websocket openshift

我有一个我无法解决的问题。 我使用 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/

相关文章:

node.js - 通过 Node.js 服务器代表用户发布到 YouTube

node.js - 如何修复 vue 中的 'ERR_OSSL_EVP_UNSUPPORTED' 错误?

node.js - GCP Cloud Function 从 Cloud Storage 读取文件

spring-mvc - Spring 4 WebSocket 配置端口

ruby - rhc 安装程序仍然给出错误 `no such file dl/import`

javascript - 第一次连接失败时如何在 Node.js 中重试数据库连接?

node.js - 获取 Kue 作业的结果并通过开放连接将其推送给客户端

java - 无法使用 Spring Websocket 发送用户消息

node.js - 如何告诉 openshift 执行 npm install 来更新软件包并重新启动应用程序?

node.js - Openshift如何访问共享文件夹