如何验证socket.io连接?我的应用程序使用来自另一台服务器(python)的登录端点来获取令牌,每当用户在节点端打开套接字连接时,我如何才能使用该令牌?
io.on('connection', function(socket) {
socket.on('message', function(message) {
io.emit('message', message);
});
});
Run Code Online (Sandbox Code Playgroud)
而客户方:
var token = sessionStorage.token;
var socket = io.connect('http://localhost:3000', {
query: 'token=' + token
});
Run Code Online (Sandbox Code Playgroud)
如果令牌是在python中创建的:
token = jwt.encode(payload, SECRET_KEY, algorithm='HS256')
Run Code Online (Sandbox Code Playgroud)
如何使用此令牌验证节点中的套接字连接?
我用JavaScript创建了一个WebSocket客户端
if ("WebSocket" in window) {
ws = new WebSocket(url);
ws.binaryType = "arraybuffer";
} else if ("MozWebSocket" in window) {
ws = new MozWebSocket(url);
ws.binaryType = "arraybuffer";
}
Run Code Online (Sandbox Code Playgroud)
和WebSocket服务器应用程序.在某些情况下,我将服务器编程为拒绝连接请求并提供错误代码.
在例如Firefox控制台中,然后会显示一条消息
Firefox can't establish a connection to the server at ws://123.123.123.123:1234/.
Run Code Online (Sandbox Code Playgroud)
它提供了状态代码
HTTP/1.1 403
Run Code Online (Sandbox Code Playgroud)
这是我的WebSocket服务器发送的错误代码.
我的问题是:如何在JavaScript客户端中读取此状态代码?
ws.onerror = function(e) {
console.log(e);
};
ws.onclose = function(e) {
console.log(e);
};
Run Code Online (Sandbox Code Playgroud)
都被调用,但没有任何Event对象包含此错误代码.