Socket.io 发送带参数的断开连接事件
Socket.io send disconnect event with parameter
我想用自定义参数手动发送断开事件到 socket.io 服务器。我使用此功能但无法使用:
//客户端
var userId = 23;
socket.disconnect(user);
//服务器
socket.on('disconnect', function (data) {
console.log('DISCONNECT: '+ data)
})
现在如何在发送断开连接事件时向服务器发送附加数据?
Socket IO 的断开连接事件在内部触发,但您可以在调用时发出自定义事件。
您需要先监听断开连接事件。调用此事件后,您应该发出自己的自定义事件,比如我们称之为 myCustomEvent
一旦调用此事件,您的客户应该会监听您的 myCustomEvent
并在听到它时,然后应该输出你传递给它的数据。例如:
io.sockets.on('connection', function (socket) {
const _id = socket.id
console.log('Socket Connected: ' + _id)
// Here we emit our custom event
socket.on('disconnect', () => {
io.emit('myCustomEvent', {customEvent: 'Custom Message'})
console.log('Socket disconnected: ' + _id)
})
})
然后您的客户端会像这样监听 myCustomEvent
socket.on('myCustomEvent', (data) => {
console.log(data)
})
希望对您有所帮助:)
我们可以在服务器端管理一个全局数组。
var sockets = [];
io.on('connection', function (socket) {
const id = socket.id ;
socket.on('user-join', function(data) {
sockets[id] = res.id;
});
socket.on('disconnect', function(data) {
io.emit('user-unjoin', {user_id: sockets[id],status:'offline'});
});
});
在客户端,
socket.on('user-unjoin', function (data) {
// update status of data.user_id according to your need.
});
此答案灵感来自 Jackthomson 的答案。
我想用自定义参数手动发送断开事件到 socket.io 服务器。我使用此功能但无法使用:
//客户端
var userId = 23;
socket.disconnect(user);
//服务器
socket.on('disconnect', function (data) {
console.log('DISCONNECT: '+ data)
})
现在如何在发送断开连接事件时向服务器发送附加数据?
Socket IO 的断开连接事件在内部触发,但您可以在调用时发出自定义事件。
您需要先监听断开连接事件。调用此事件后,您应该发出自己的自定义事件,比如我们称之为 myCustomEvent
一旦调用此事件,您的客户应该会监听您的 myCustomEvent
并在听到它时,然后应该输出你传递给它的数据。例如:
io.sockets.on('connection', function (socket) {
const _id = socket.id
console.log('Socket Connected: ' + _id)
// Here we emit our custom event
socket.on('disconnect', () => {
io.emit('myCustomEvent', {customEvent: 'Custom Message'})
console.log('Socket disconnected: ' + _id)
})
})
然后您的客户端会像这样监听 myCustomEvent
socket.on('myCustomEvent', (data) => {
console.log(data)
})
希望对您有所帮助:)
我们可以在服务器端管理一个全局数组。
var sockets = [];
io.on('connection', function (socket) {
const id = socket.id ;
socket.on('user-join', function(data) {
sockets[id] = res.id;
});
socket.on('disconnect', function(data) {
io.emit('user-unjoin', {user_id: sockets[id],status:'offline'});
});
});
在客户端,
socket.on('user-unjoin', function (data) {
// update status of data.user_id according to your need.
});
此答案灵感来自 Jackthomson 的答案。