UNPKG

gamecloud

Version:
59 lines (50 loc) 1.98 kB
let express = require('express') let app = express(); let bodyParser = require('body-parser') let httpObj = require('http') const WSProxy = require('./wsproxy') /** * 在 wshost:wsport 上启动 WSProxy * @param {*} params */ function startproxy(params) { //启用跨域访问 app.all('*',function (req, res, next) { // 允许应用的跨域访问 res.header('Access-Control-Allow-Origin', '*'); res.header('Access-Control-Allow-Headers', 'Content-Type, Content-Length, Authorization, Accept, X-Requested-With , yourHeaderFeild'); res.header('Access-Control-Allow-Methods', 'PUT, POST, GET, DELETE, OPTIONS'); if (req.method == 'OPTIONS') { //让options请求快速返回 res.sendStatus(200); } else { next(); } }); //#region 添加POST模式下的body解析器 app.use(bodyParser.urlencoded({extended: true})) app.use(bodyParser.json()); //#endregion const server = httpObj.createServer(app); //需要配置节点所在的公网上的IP地址: let $host = params.node.config.str('wshost', '127.0.0.1'); let $port = params.node.config.uint('wsport', 2104); server.listen($port, $host, () => { // 为SPV节点代理 WS-TCP 转换服务:创建桥接器管理者,负责为每一个进入的websocket连接分配一个桥接器,提供对等的 tcp socket 服务 new WSProxy({ server: server, pow: params.pow, //客户端是否支持POW ports: params.ports //白名单:允许连接的端口列表 }); }); //下发404 必须在控制器路由、静态资源路由全部加载之后设定 app.use(function(req, res, next) { res.status(404).send('Sorry cant find the path!'); }); //捕获并下发错误码 必须放在最后! app.use(function(err, req, res, next) { console.error(err.stack); res.status(500).send('Something broke!'); }); } module.exports = startproxy;