有一种方法可以管理服务器端的socket.io创建吗?目前,我找不到任何文档,只根据客户端的请求创建了与套接字相关的文件“io.connect (服务器)“即可。
当前的流量工作正常:
我想知道是否有可能?试着做:
以
的身份发送到客户端socket.id到客户端答案 0 :(得分:2)
到目前为止,深入研究代码和文档,我发现socket.io支持名称空间,因此我使用它来管理客户端连接ID。
在server.js
var app = express();
var server = require('http').createServer(app),
io = require('socket.io').listen(server,{ log: false });
// Rest New Process
function generateNameSpaceWs (responce, request) {
io.of("/" + id).on('connection', handler);
response.send(id);
}
app.post("/newWS", function (res, req) {
return generateNameSpaceWs(res, req);
}
在Client.js
function makeWS(){
var ws, c = new XMLHttpRequest();
c.open("GET", url, false);
c.send();
if (c.status == 200){
id = JSON.parse(c.responseText);
ws = new io.connect("server/" + id)
}
答案 1 :(得分:0)
到目前为止,您做得对,如果我正确理解您的问题,您正尝试通过POST验证连接,以便用户只能在服务器响应ID时通过套接字连接到服务器。这是一种迂回的方式。使用套接字而不是POST。
套接字服务器必须已经运行,并通过io.sockets.on('connection')
接受连接,在服务器上您可以选择接受还是拒绝它,执行socket.disconnect('unauthorized')
以关闭服务器的连接。
我建议你这样做:
io.sockets.on('connection', function(socket)
进行身份验证/处理。答案 2 :(得分:0)
这似乎不太可能 - 虽然socket.io的官方文档是lacking,但net module的文档表明创建套接字的唯一方法是启动服务器端。 但是,您仍然可以通过为服务器上的套接字创建与套接字关联的id来实现所需的效果。也就是说,
客户端使用
之类的内容将id发送到服务器socket.emit("set_id",id)
服务器接收id并使用类似
之类的东西将其与套接字关联socket.on("set_id",function(id){
socket.set("id",id)
}