我用laravel broadcaasting构建我的套接字应用程序。我制作了我的服务器脚本,然后在此脚本中添加了https :(代码可能包含错误,因为它是从内存中写入的)
var fs = require('fs');
var https = require('https');
var express = require('express');
var app = express();
var options = {
key: fs.readFileSync('./file.pem'),
cert: fs.readFileSync('./file.crt')
};
var serverPort = 3000;
var server = https.createServer(options, app);
var io = require('socket.io')(server);
require('socketio-auth')(io, {
authenticate: authenticate,
postAuthenticate: postAuthenticate,
disconnect: disconnect,
timeout: 1000
});
之后我添加了socketio-auth并将其修改为仅用户名和密码验证。
function authenticate(socket, data, callback) {
if (data.username != "username") {
return callback(new Error("User not found"));
}
return callback(null, user.password == "password");
}
}
我的问题是关于我通过套接字发送的信用证。
import VueSocketio from 'vue-socket.io';
Vue.use(VueSocketio, socketio('https://socketserver.com:1923', {secure: true}));
var vm = new Vue({
sockets:{
connect: function(){
console.log('socket connected')
this.$socket.emit('authentication', {username : "username", password: "password"});
},
},
})
我实际上是在使用Vue和vue-socketio,但它正在使用连接以及正确获取/发送信息。
我得到的问题是当我要在谷歌浏览器控制台时,我会得到纯文本套接字发出的身份验证信息 (请求PAYLOAD:{authentication:{username:“username”,密码:“password”}})。
当我使用ssl时这是正常的吗?我的代码有问题吗? 或者我需要加密然后自己解密这些信息?
我认为通过HTTPS发送的所有内容都是加密的。
寻找你的重播。谢谢!
答案 0 :(得分:0)
Okey我制作了自己的加密器。 对于客户端,我使用数据发送加密信息,使用socket.id发送验证散列。
对于服务器我解密并使用socket.id检查hmac验证。