JavaScript – 与OpenShift应用程序的WebSocket连接失败

我用NodeJS创建了一个应用程序,而我正在使用ws模块.如果我在本地主机测试该应用程序它是有效的,没有任何问题连接websockets.现在我将应用程序上传到Openshift,当我尝试从客户端访问它时,返回是无法建立到websocket的连接.

如果我对我的应用程序做了一个腻子的尾巴,我有这个消息:DEBUG:这种类型的响应不能有一个正文.忽略传递给end()的数据.

我在服务器上的代码是:

#!/bin/env node

//Openshift variables
var ipaddress = process.env.OPENSHIFT_NODEJS_IP || "192.168.69.42";
var port = process.env.OPENSHIFT_NODEJS_PORT || 8080;


//NodeJS require modules
var Enum = require('enum');
var WebSocketServer = require('ws').Server
    wss = new WebSocketServer({host:ipaddress,port:port});
var fs = require('fs');


wss.on('connection',function(ws) {
    console.log((new Date()) + ' Connection from origin: ' + ws._socket.remoteAddress);
});

console.log((new Date()) + " Server is listening on: " + ipaddress + ':' port);

并在客户端:

var ws = new WebSocket("ws://192.168.69.42:8080/");

ws.onopen = function() {
    console.log("Connected.");
    ws.send("This is the client speaking.");
};

解决方法

对于OpenShift上的所有WebSocket连接,您需要使用端口8000(对于安全会话,它将为8443).所以,您的服务器示例工作正常(我删除不必要的行后运行它)var Enum = require(‘enum’);您只需要将客户端上的端口硬编码为8000:
var ws = new WebSocket("ws://YourApp-YourName.rhcloud.com:8000"); 

ws.onopen = function(){
  console.log('opened')
}

更多信息here.

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...