1

我正在尝试获取一个基于旧 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 正在进行的一般问题有关,但我遇到的其他相关问题似乎已经解决,并且该问题已发布一周没有更新,所以我想我会更深入地研究这个,假设这是做错的事情而不是他们。

任何人都知道更多关于这一点以及我需要做些什么才能使其工作?

4

0 回答 0