Joa*_*m M 2 javascript sockets https node.js socket.io
一如既往,我一直在搜索我的手指血腥找到我的问题的答案,所以我再次接触你所有的天才!:)
我已经使用socket.io(使用express)设置了一个Node.js服务器,它使用端口8443运行良好.它运行:).由于我的许多客户似乎不允许端口8443上的流量,因此他们无法使用我的服务.
我想知道如何在端口443上设置Node.js,因为使用Node-server的站点已经在使用此端口(Https).如果我尝试在我的节点服务器上使用端口443我得到:warn - 引发错误:错误:听EACCES
我的Node-js代码的一部分:
var fs = require('fs');
var https = require('https');
var express = require('express');
var socket = require('socket.io');
var port = 8443;
var sslOptions = {
pfx: fs.readFileSync('mykey.pfx'),
passphrase: ********
};
var app = express();
app.all('/*', function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization, Content-Length, X-Requested-With, *');
next();
});
var server = https.createServer(sslOptions, app);
var io = socket.listen(server, {
"log level" : 1,
"match origin protocol" : true,
"transports" : ['websocket', 'flashsocket'
, 'xhr-polling'
, 'jsonp-polling']
});
//No need to list all my socket events I guess
server.listen(port);
Run Code Online (Sandbox Code Playgroud)
连接到我的节点服务器的客户端代码:
var socket = io.connect("https://www.*MYWEBSITE*.com", { secure: true, port: 8443});
Run Code Online (Sandbox Code Playgroud)
我想你在这里问了几个不同的问题.我将自己回答第一个,它应该解决你原来的问题,但其他一些人提出了一些值得了解的方便的部署选项.
首先,您不需要在它自己的端口上运行socket.io服务器.您可以让socket.io服务器将自己绑定到Express应用程序.例如:
// ... require stuff
var app = express();
// ... set up your express middleware, etc
var server = https.createServer(sslOptions, app);
// attach your socket.io server to the express server
var io = require("socket.io").listen(server);
server.listen(port);
Run Code Online (Sandbox Code Playgroud)
无论您如何设置节点应用程序,都值得知道如何将nginx设置为反向代理.这很好,因为您在运行节点应用程序时不必是root用户端口<1024,并且可以通过虚拟主机将许多应用程序绑定到同一IP地址.
这是一个nginx服务器配置块,它将反向代理节点应用程序(并支持websockets).
server {
listen 80;
server_name app.com www.app.com # a list of hosts for this application
access_log /var/log/nginx/access/app.log; # you'll need to create /var/log/nginx/access
error_log /var/log/nginx/error/app.log; # and you'll need to create /var/log/nginx/error
# prevents 502 bad gateway error
large_client_header_buffers 8 32k;
location / {
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_set_header Accept-Encoding "";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_buffers 8 32k;
proxy_buffer_size 64k;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:8000; # put the port of your node app here
proxy_redirect off;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6316 次 |
| 最近记录: |