无法在 openshift 上部署 nodejs 套接字 io 应用程序

Posted

技术标签:

【中文标题】无法在 openshift 上部署 nodejs 套接字 io 应用程序【英文标题】:unable to deploy nodejs socket io application on openshift 【发布时间】:2015-11-25 11:45:10 【问题描述】:

我有一个基于 nodejs 和 socket io 的简单聊天应用程序。在本地运行良好。但是我在将其部署到 openshift 时遇到了问题。

我已经阅读并实现了 Stack Overflow 上几乎所有相关的线程。还没有进展。

客户端(index.html):

<script src="/socket.io/socket.io.js"></script>
var socket = io.connect("http://www.abcd.com:8000/"); 

其中 'abcd' 是附加到 openshift 应用程序的域名。

服务器端(index.js):

//Express initializes app to be a funciton handler that is to be supplied to the http server later
var express = require('express');
var app = express();
//
var server = require('http').Server(app);
var io = require('socket.io')(server);
var mongoose  = require('mongoose');

var server_port = process.env.OPENSHIFT_NODEJS_PORT || 3000
var server_ip_address = process.env.OPENSHIFT_NODEJS_IP || '127.0.0.1'

//server listening
server.listen(server_port, server_ip_address, function()
  console.log('listening on *:'+server_port);
);

我已经做了以下事情:

将客户端 URL 更改为:ws://www.abcd.com:8000/ 将 io.connect 替换为 io 将端口切换到 80 还有很多其他的东西。

错误

如果我将声明保留为: var socket = io();错误是 WebSocket 连接到“ws://www.abcd.com/socket.io/?EIO=3&transport=websocket&sid=tyEDb4eVF0Nz0wb-AAAF”失败:WebSocket 握手期间出错:意外响应代码:400 如果我声明为 var socket = io.connect('http://www.abcd.com:8000/','forceNew':true);错误是 GET http://www.abcd.com:8000/socket.io/?EIO=3&transport=polling&t=1430395346761-6 net::ERR_CONNECTION_TIMED_OUT

【问题讨论】:

【参考方案1】:

在我看来,您没有将 websockets 绑定到 ip 和端口, 在你的 server.listen 之后,试试这个:

var socket = io.listen(server);

【讨论】:

以上是关于无法在 openshift 上部署 nodejs 套接字 io 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

Openshift PaaS云平台部署通俗讲解一(介绍概念)

Openshift PaaS云平台部署通俗讲解一(介绍概念)

Openshift PaaS云平台部署通俗讲解一(介绍概念)

在 openshift 上部署 Ninjaframework 应用程序

在裸机上部署openshift4.3

在 Openshift 上部署战争文件后未找到合适的驱动程序错误