Na minha postagem anterior no blog, Socket.io, apresentei brevemente o uso básico do Socket.io e criei uma demonstração simples da sala de bate -papo. Com base no capítulo introdutório, este artigo continua a explorar o uso avançado do Socket.io. Este artigo começará a partir da configuração, salas, eventos, etc., e apresentará algumas APIs e precauções práticas no Socket.io.
1. Configuração
O Socket.io fornece 4 APIs de configuração: io.configure, io.set, io.enable, io.disable. io.set define o item único, e io.enable e io.disable são usados para definir a configuração booleana em um único item. O io.configure permite configurar diferentes parâmetros para diferentes ambientes de produção (como desenvolvimento, teste etc.). A seguir, define as diferentes configurações do soquete.io em dois ambientes:
A cópia do código é a seguinte:
var io = requer ('Socket.io'). Ouça (80);
io.configure ('desenvolvimento', function () {
io.enable ('cliente do navegador etag');
io.set ('nível de log', 1);
});
io.configure ('release', function () {
io.set ('transportes', ['webSocket']);
});
O seguinte lista alguns itens de configuração comumente usados. Para parâmetros de configuração específicos, consulte o wiki oficial.
1) .Transports (padrão ['websocket', 'htmlfile', 'xhr-polling', 'jsonp-polling']): uma matriz contendo tipos de método de comunicação. O Socket.io suporta várias maneiras de realizar uma comunicação on -line instantânea, como WebSocket, Pollings, etc. Essa configuração permite escolher o método de comunicação de backup.
2.
3).
2. Sala
O quarto é um recurso muito útil fornecido pelo soquete.io. A sala é equivalente a fornecer um espaço para nome para alguns clientes especificados, e todas as transmissões e comunicações na sala não afetarão os clientes fora da sala.
Na introdução, sabemos que o soquete. Quando o cliente entra em uma sala, a mensagem pode ser transmitida na sala de duas maneiras:
A cópia do código é a seguinte:
// 1. Transmitir um evento para o meu quarto, e o enviado será excluído (ou seja, nenhuma mensagem será recebida)
io.sockets.on ('conexão', função (soquete) {
// Nota: Comparado com o seguinte, aqui está para enviar eventos da perspectiva do cliente
socket.broadcast.to ('meu quarto'). emit ('event_name', dados);
}
// 2. Transmitir um evento para outra sala, e todos os clientes nesta sala receberão uma mensagem
// Nota: comparado com o acima, aqui está para enviar eventos da perspectiva do servidor
io.sockets.in ('outra sala'). Emit ('event_name', dados);
// transmitido para todos os clientes
io.sockets.emit ('event_name', dados);
Além de transmitir mensagens para a sala, você também pode obter informações de quarto através da seguinte API.
A cópia do código é a seguinte:
// Obtenha informações sobre todos os quartos
// chave é o nome da sala, o valor é a matriz de identificação do soquete correspondente ao nome da sala
io.sockets.manager.rooms
// Obtenha o cliente em particular e retorne todas as instâncias de soquete nesta sala
io.sockets.clients ('sala em particular')
// Obtenha as informações da sala inseridas por este soquete através do soquete.id
io.sockets.manager.roomcliients [Socket.id]
3. Eventos
Socket.io tem alguns eventos padrão internos. Ao projetar eventos, devemos evitar os nomes de eventos padrão e usar de maneira flexível esses eventos padrão.
Eventos do lado do servidor:
1) .io.sockets.on ('conexão', função (soquete) {}): acionado após o sucesso da conexão do soquete, usada para inicialização
Socket.on ('mensagem', function (mensagem, retorno de chamada) {}): Este evento é acionado quando o cliente transmite uma mensagem através do soquete.send. A mensagem é a mensagem transmitida. O retorno de chamada é o retorno de chamada a ser executado após receber a mensagem.
2) .socket.on ('qualquer coisa', function (dados) {}): disparado quando qualquer evento é recebido
3) .socket.on ('Desconect', function () {}): aciona quando o soquete perde a conexão (incluindo quaisquer situações de desconexão, como fechar o navegador, desconectar ativamente, desconectar etc.)
Eventos de clientes:
1) .Connect: A conexão é bem -sucedida
2) .Connecting: conectando
3) .Disconnect: Desconecte
4) .Connect_Failed: a conexão falhou
5) .Error: ocorreu um erro e não pode ser processado por outros tipos de eventos.
6). Message: o mesmo evento de mensagem do lado do servidor
7). Qualquer coisa: qualquer coisa do evento no mesmo servidor
8) .reconnect_failed: Reconectar falhou
9) .reconnect: reconectado com sucesso
10) .Connecting: Reconexão
Aqui precisamos mencionar o pedido quando o soquete do cliente inicia a conexão. Quando a primeira conexão é conectada, a ordem de acionamento do evento é: Connect-> Connect; Quando a conexão é perdida, o pedido de acionamento do evento é: desconecte-> reconectando (pode ser executado várias vezes)-> Connecting-> Reconect-> Connect-> Connect.
4. Autorização
1). Transmitido para todos os clientes: Socket.broadcast.emit ('Mensagem de transmissão');
2). Entre em uma sala (muito fácil de usar! É equivalente a um espaço para nome, que pode ser transmitido para uma sala específica sem afetar os clientes em outras salas ou não na sala): Socket.Join ('Nome do seu quarto');
3). Mensagem de transmissão para uma sala (o remetente não pode receber a mensagem): Socket.broadcast.to ('Nome do seu quarto'). Emit ('Mensagem da sala de transmissão');
4). As mensagens de transmissão para uma sala (incluindo o remetente podem receber mensagens) (esta API pertence a io.sockets): io.sockets.in ('outro nome da sala'). Emit ('mensagem de sala de transmissão');
5). Force WebSocket Communication: (Client) Socket.send ('Hi'), (Server) Use Socket.on ('Mensagem', function (Data) {}) para receber.
Esta é basicamente a introdução ao uso avançado do soquete.io. Pessoalmente, sinto que essas APIs básicas são suficientes em uso diário, que também reflete a filosofia de design extremamente simples e fácil de usar do Socket.io. Este artigo é apenas uma maneira de atrair atenção. Ao encontrar problemas que não podem ser resolvidos em uso real, será melhor verificar o wiki detalhado oficial.