我正在尝试获取一个基于旧 OpenShift Online 2 免费服务构建的应用程序,并在新的 OpenShift Online 3 Starter 上运行,但遇到了一些麻烦。
该应用程序使用 websocket,在旧系统中,客户端只需要在端口 8443 上连接到我的服务器(该端口自动路由到我的服务器)。但是,这在新设置中似乎不起作用-连接超时-而且我无法找到有关在新系统中使用 websocket 的任何文档。
我的第一个想法是我需要一个额外的路由,但据我所知,8080 是唯一可用于路由的端口选项。
该应用程序位于此处,并且在此脚本的第 21行与以下行建立了连接:
this.socket = new WebSocket( 'wss://' + this.server + ':' + this.port, 'tabletop-protocol' );
在实践中变成:
this.socket = new WebSocket( 'wss://production-instanttabletop.7e14.starter-us-west-2.openshiftapps.com:8443/', 'tabletop-protocol' );
在后端,服务器设置与我在 OpenShift 2 上的设置相同,除了根据env
需要更新 IP 和端口查找,并添加日志记录以帮助诊断我遇到的问题。
作为参考,这里是 node.js 服务器代码(去掉了逻辑):
var http = require( "http" );
var ws = require( "websocket" ).server;
// Trimmed some others used by the logic...
var ip = process.env.IP || process.env.OPENSHIFT_NODEJS_IP || '0.0.0.0';
var port = process.env.PORT || process.env.OPENSHIFT_NODEJS_PORT || 8080;
/* FILE SERVER */
// Create a static file server for the client page
var pageHost = http.createServer( function( request, response ){
// Simple file server that seems to be working, if a bit slowly
// ...
} ).listen( port, ip );
/* WEBSOCKET */
// Create a websocket server for ongoing communications
var wsConnections = [];
wsServer = new ws( { httpServer: pageHost } );
// Start listening for events on the server
wsServer.on( 'request', function( request ){
// Server logic for the app, but nothing in here ever gets hit
// ...
} );
在另一个问题中,有人建议几乎任何事情 - 包括这个 - 都可能与美国西部 2 正在进行的一般问题有关,但我遇到的其他相关问题似乎已经解决,并且该问题已发布一周没有更新,所以我想我会更深入地研究这个,假设这是我做错的事情而不是他们。
任何人都知道更多关于这一点以及我需要做些什么才能使其工作?