gpt4 book ai didi

javascript - 当用户连接到聊天时发出套接字

转载 作者:行者123 更新时间:2023-12-03 04:46:02 24 4
gpt4 key购买 nike

我试图在每次用户连接时更新连接到聊天的用户数量,但不起作用。它适用于断开连接,但不适用于连接。
这是服务器

var socket = require( 'socket.io' );
var express = require( 'express' );
var http = require( 'http' );

var app = express();
var server = http.createServer( app );

var io = socket.listen( server );
server.listen( 8080 );

connections = [];

io.sockets.on( 'connection', function( client ) {
connections.push(client);
console.log( "---CONNECT--- INFO --> New user connected! >>>>> USERS ONLINE: %s", connections.length);

client.on('connection', function(data){
io.sockets.emit('connect', {users:connections.length});
});

client.on('disconnect', function(data){
connections.splice(connections.indexOf(client),1);
console.log("---DISCONNECT--- INFO --> User disconnected >>>>> USERS LEFT: %s", connections.length);

io.sockets.emit('disconnect', {users:connections.length});
});

client.on( 'message', function( data ) {
console.log( 'Message received from: ' + data.id);

io.sockets.emit( 'message', {id:data.id, name: data.name, avatar: data.avatar, message: data.message } );
});
});

如果我这样做,断开连接将停止工作,服务器将停止正常工作。如果我在 client.on 之外发出,而该 client.on 位于 io.sockets.on('connection') 内部,则服务器将崩溃。
在客户端上,我有这个:

var socket = io.connect( 'http://localhost:8080' );
socket.emit('connection');

socket.on('connect', function(data){
$("#usersOnline").html(data.users);
});
socket.on('disconnect', function(data){
$("#usersOnline").html(data.users);
});

最佳答案

您可以使用socket.joinsocket.leave .

io.sockets.on( 'connection', function( client ) {
connections.push(client);

client.join('room', function(data){
//
});

client.leave('room', function(data){
//
});
});

关于javascript - 当用户连接到聊天时发出套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42873028/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com