Node.js 在服务器端生成socket.io作为Rest请求
有一种方法可以在服务器端管理socket.io的创建吗?目前,我找不到任何文档,只找到与socket相关的文档是根据客户端的请求创建的 当前流工作正常:Node.js 在服务器端生成socket.io作为Rest请求,node.js,websocket,socket.io,Node.js,Websocket,Socket.io,有一种方法可以在服务器端管理socket.io的创建吗?目前,我找不到任何文档,只找到与socket相关的文档是根据客户端的请求创建的 当前流工作正常: 在服务器端口设置Socket.io(位于Node.js) 客户端连接到服务器 使用io.connect(服务器:端口) 我想知道这是否可能?尝试做: 在服务器端口设置Socket.io(位于Node.js) 收到一个POST(REST)-服务器端 在服务器端创建/打开Socket.io 在Post响应时是否发送id 克莱恩打开一只袜子
- 使用io.connect(服务器:端口)
- 在服务器端创建/打开Socket.io
- 在Post响应时是否发送id
发送到client socket.id到client as到目前为止,您的做法是正确的,如果我正确理解您的问题,您正在尝试通过POST验证连接,因此,如果服务器响应id,用户只能通过套接字连接到服务器。这是一种迂回的方式。用插座代替柱子 套接字服务器必须已经运行,并通过
io.sockets接受连接。在('connection')
,您可以在服务器上选择是接受还是拒绝它,执行Socket。断开('unauthorized')
以关闭与服务器的连接
我建议您这样做:
io.sockets.on('connection',function(socket)
上进行身份验证/处理这似乎是不可能的——虽然socket.io的官方文档是,但的文档表明创建套接字的唯一方法是在服务器端启动它。 但是,您仍然可以通过在服务器上为套接字创建一个与套接字关联的id来实现所需的效果
- 使用io.connect(服务器:端口)
socket.emit("set_id",id)
socket.on("set_id",function(id){
socket.set("id",id)
}
socket.emit("set_id",id)
socket.on("set_id",function(id){
socket.set("id",id)
}
祝你好运!到目前为止,深入查看代码和文档,我发现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)
}
谢谢,但我遗漏了一些东西,在客户端我有一个ID,这个ID将添加到io.connect(服务器)或作为io.socket.emit的一部分?您应该通过socket.emit()将ID作为数据发送(第二个参数)以发送ID。然后服务器/客户端可以从socket.on()读取它并使用它。