我正在尝试获取一个应用程序,我建立在旧的OpenShift Online 2免费服务上并在新的OpenShift Online 3 Starter上运行,我已经拥有了有点麻烦。
应用程序使用websocket,在旧系统中,所需的只是客户端连接到我的服务器端口8443(它自动路由到我的服务器)。但这似乎不适用于新的设置 - 连接只是超时 - 而且我还没有找到任何关于在新系统中使用websocket的文档。
我的第一个想法是我需要一个额外的路由,但就我所见,8080是唯一可用于路由的端口选项。
该应用程序存在here,并且在this script的第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
// ...
} );
在另一个问题中,有人提出几乎任何事情 - 包括这个 - 可能与美国West 2正在进行的一般性问题有关,但我遇到的其他相关问题似乎已经解决,而且这个问题已经发布了一个星期而没有更新,所以我认为我会深入挖掘假设它是我' m 做错了而不是它们。
任何人都知道更多关于这个以及我需要做些什么才能使它发挥作用?