nodejs-websocket 检测非 websocket 连接尝试
nodejs-websocket detect non-websocket connection attempt
我是 运行 使用 nodejs-websocket 模块的 websocket 服务。
我想检测未使用 websocket 协议的连接尝试并采取一些措施。
我想过使用 setTimeout(n) 并在 conn.readystate 从 'connecting' 变为 'open' 时清除超时,或者在计时器到期时采取行动,但我希望有更直接的方法。
如何检测非 websocket 连接尝试?
连接有一个错误事件,所以你可以Connection.on('error', function(err) ...
。这将意味着连接出现问题,但我认为此时您无法对连接进行任何操作。
一个建议是使用 Socket.io,它可以在 HTTP/Connect/Express 服务器上聚会。它可以使用 HTTP(Kinda) 或 WebSockets。然后你可以这样做:
var app = require('express')();
var server = require('http')
.Server(app);
var io = require('socket.io')(server);
server.listen(3000);
app.get('/*', function(req, res) {
res.json({
hello: 'world'
});
});
io.on('connection', function(socket) {
socket.emit('news', {
hello: 'world'
});
socket.on('my other event', function(data) {
console.log(data);
});
});
/Socket.io/*
路径下有所有 Socket.io 连接。 app.get('/*',...)
调用将处理任何其他连接。这只会捕获 http 请求。
webocket 协议通过 HTTP 请求启动每个连接,header 设置 "requests" 对 webSocket 协议的升级。当服务器双方都同意时,它会响应升级,然后客户端和服务器都将协议更改为 webSocket 协议。
因此,non-webSocket 连接尝试要么是纯 HTTP 连接,要么只是套接字连接尝试,甚至不是 HTTP。因此,无论哪种情况,连接都将在 HTTP 服务器上以 404(Web 服务器没有响应的 HTTP 请求)或无效协议(不是 HTTP)的形式终止。
我是 运行 使用 nodejs-websocket 模块的 websocket 服务。
我想检测未使用 websocket 协议的连接尝试并采取一些措施。
我想过使用 setTimeout(n) 并在 conn.readystate 从 'connecting' 变为 'open' 时清除超时,或者在计时器到期时采取行动,但我希望有更直接的方法。
如何检测非 websocket 连接尝试?
连接有一个错误事件,所以你可以Connection.on('error', function(err) ...
。这将意味着连接出现问题,但我认为此时您无法对连接进行任何操作。
一个建议是使用 Socket.io,它可以在 HTTP/Connect/Express 服务器上聚会。它可以使用 HTTP(Kinda) 或 WebSockets。然后你可以这样做:
var app = require('express')();
var server = require('http')
.Server(app);
var io = require('socket.io')(server);
server.listen(3000);
app.get('/*', function(req, res) {
res.json({
hello: 'world'
});
});
io.on('connection', function(socket) {
socket.emit('news', {
hello: 'world'
});
socket.on('my other event', function(data) {
console.log(data);
});
});
/Socket.io/*
路径下有所有 Socket.io 连接。 app.get('/*',...)
调用将处理任何其他连接。这只会捕获 http 请求。
webocket 协议通过 HTTP 请求启动每个连接,header 设置 "requests" 对 webSocket 协议的升级。当服务器双方都同意时,它会响应升级,然后客户端和服务器都将协议更改为 webSocket 协议。
因此,non-webSocket 连接尝试要么是纯 HTTP 连接,要么只是套接字连接尝试,甚至不是 HTTP。因此,无论哪种情况,连接都将在 HTTP 服务器上以 404(Web 服务器没有响应的 HTTP 请求)或无效协议(不是 HTTP)的形式终止。