[英]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.