繁体   English   中英

OpenShift NodeJS部署:socket.io index.html端口分配等

[英]OpenShift NodeJS deployment : socket.io index.html port assignment, etc

我在本地使用socket.io和express模块​​编写了一个nodeJS应用程序。 我想用openshift进行托管。 所以我将主.js更改为server.js,这似乎是openshift文件的等效索引,并将服务器端口设置更改为:

var server = require('http')。createServer(app).listen(process.env.OPENSHIFT_NODEJS_PORT || 3000);

如某些帖子所示。 但是在git提交后,我仍然得到:

remote:info:socket.io start remote:warn:error raise:error:listen EACCES remote:DEBUG:Program node server.js退出,代码为0 remote:remote:DEBUG:使用'node server.js'启动子进程

并且该网站不起作用。

当应用程序提供html文件时,还有两个地方,其中提到了端口,它位于提供的index.html中:

标题:

<script src='//localhost:3000/socket.io/socket.io.js'></script>

并在javascript中为html文件:

var socket = io.connect('//localhost:'+process.env.OPENSHIFT_NODEJS_PORT || 3000);

//来自服务器socket.on的'intial vars和多列表'('clientConfig',onClientConfig);

所有文件和模块似乎都已上传,但EACCES错误仍然存​​在。

我觉得可能是localhost:3000的标题链接可能是跳过点,但我不确定。 任何人都有任何想法,问题是什么? 此外,在socket.io modules文件夹中没有:socket.io /socket.io.js文件,我觉得这很困惑。

我最近使用socket.io开发了一个聊天客户端应用程序,并且还有webrtc。 通过对代码进行以下更改,我能够在openshift上部署应用程序。

客户端

以相对方式保留include脚本标记

<script src="/socket.io/socket.io.js"></script>

在声明io.connection时,更改ip部分以将此应用程序指向服务器。

var socket = io.connect('http://yourapp-domain.rhcloud.com:8000/', {'forceNew':true });

8000用于http,8443用于https

服务器端

io和服务器都应该监听同一个端口,并且还应该注意运行语句的顺序。

第1步:使用app声明http服务器。 (app来自快递)

var express = require('express');var app = express();) var server = require('http').Server(app);

第2步:

从socket.io声明io并将其与服务器对象组合。 var io = require('socket.io').listen(server);

第3步:

现在,允许服务器监听openshift端口和ip。

server.listen(process.env.OPENSHIFT_NODEJS_PORT, process.env.OPENSHIFT_NODEJS_IP);

请特别注意您所写的陈述的顺序,这是导致问题的顺序。

您的websocket的服务器端需要在您的openshift IP地址上侦听端口8080,CLIENT端需要连接到您的ws://app-domain.rhcloud.com:8000

我在这里有一些关于如何使用WebSockets的说明: https//www.openshift.com/blogs/10-reasons-openshift-is-the-best-place-to-host-your-nodejs-app#websockets

在调整代码以利用环境变量(如果可用)后,您不需要任何其他服务器端更改

OpenShift的路由层在几个外部可访问的端口上公开您的应用程序:80,443,8000,8443。

端口8000和8443都能够处理websocket连接升级。 我们希望尽快在端口80和443上添加对WebSocket连接的支持。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM