gpt4 book ai didi

https - Feathersjs -> socketio https 请求不起作用

转载 作者:行者123 更新时间:2023-12-04 23:38:39 25 4
gpt4 key购买 nike

我有一个用featherjs制作的应用程序,我想用https运行它。我已经开始工作了。我通过将“index.js”文件更改为如下所示来做到这一点:

const fs = require('fs');
const https = require('https');
const app = require('./app');
const port = app.get('port');
const host = app.get('host');
//const server = app.listen(port);
const server = https.createServer({
key: fs.readFileSync('./certs/aex007.key'),
cert: fs.readFileSync('./certs/aex007.crt')
}, app).listen(port, function(){
console.log("Mfp Backend started: https://" + host + ":" + port);
});

只要我现在去例如' https://127.0.0.1/a_service_name ' 在 postman 中,我接受证书后得到结果。当我在浏览器中访问该地址时,它也会给出结果,证书指示为“红色”,因为它是自签名的。

所以我的问题如下。当我去' http://127.0.01 ' 在浏览器中,而不是 'index.html' 文件,我没有得到任何我的 'socket' 信息,只有一个空白页。我在控制台中收到以下错误

info: (404) Route: /socket.io/?EIO=3&transport=polling&t=LwydYAw - Page not found



然后我正在使用的“index.html”文件当前包含以下内容:
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.0.3/socket.io.js"></script>
<script type="text/javascript" src="//cdn.rawgit.com/feathersjs/feathers-client/v1.1.0/dist/feathers.js"></script>
<script type="text/javascript">
var socket = io('https://127.0.0.1:3001');
var client = feathers()
.configure(feathers.hooks())
.configure(feathers.socketio(socket));
var todoService = client.service('/some_service');

todoService.on('created', function(todo) {
alert('created');
console.log('Someone created a todo', todo);
});

</script>

有人可以向我解释如何获取警报消息吗?

编辑 2017/09/27
我在互联网上发现 socket.io 的配置如下
var https = require('https'),     
fs = require('fs');

var options = {
key: fs.readFileSync('ssl/server.key'),
cert: fs.readFileSync('ssl/server.crt'),
ca: fs.readFileSync('ssl/ca.crt')
};
var app = https.createServer(options);
io = require('socket.io').listen(app); //socket.io server listens to https connections
app.listen(8895, "0.0.0.0");

然而,feathers-socket.io 的要求是在 app.js 中而不是 index.js。我想知道我可以移动吗?

最佳答案

dafflfeathers slack channel 上指出here ; check out the documentation这需要 feathers-socketio在调用 configure 之前明确在应用程序上,除了 https portion of the docs .将这两者放在一起,我会做这样的事情(未经测试):

const feathers = require('feathers');
const socketio = require('feathers-socketio');
const fs = require('fs');
const https = require('https');


const app = feathers();
app.configure(socketio());

const opts = {
key: fs.readFileSync('privatekey.pem'),
cert: fs.readFileSync('certificate.pem')
};

const server = https.createServer(opts, app).listen(443);

// magic sauce! Socket w/ ssl
app.setup(server);

您的 app.js的结构和 index.js完全取决于你。您可以在一个文件中完成上述所有操作,如图所示,或者将 https/fs 要求拆分为 index.js,并将应用程序配置为 app.js - 我会推荐这种方法,因为它允许您更改 (通常较小)index.js 文件,如果您决定使用像 nginx 这样的反向代理来处理 ssl 而不是 node。

关于https - Feathersjs -> socketio https 请求不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46418360/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com