标签:client disco ret 信息 连接 api 其他 require --
初次学习用于即时通信的技术,现将自己对 Socket.io 的理解记录在此,技术细节可以查看相关文档。
即时通信主要由服务端和客户端构成,服务端有一个,客户端有多个,Socket.io 实现了服务端与客户端的双向通信,因此可以进行即时通信。
Socket.io 主要涉及到两个对象: Server 和 socket (有服务端 socket 和 客户端 socket )。
大致的工作流程: 服务端需要启动一个 Server 进行监听, 客户端起一个 socket 去连接服务端,服务端接受并建立起连接,此时得到服务端 socket 。
Server 主要功能有监听客户端的连接请求、划分命名空间(NameSpace)、向命名空间(NameSpace)内发送消息。
server 监听事件
主要作用是监听客户端建立连接,连接成功后,服务端 socket 将作为回调函数的参数
connect
事件,const server = require("socket.io")(3000);
server.on("connect", function(socket) {
console.log("on connect", socket.id);
});
建立一个命名空间(NameSpace)
namespace
可以理解为频道,也可以理解为服务的不同地址或不同路由,可以用来划分业务
server
默认的 namespace
就为 ‘/‘
返回的 NameSpace
对象与 Server
相似
server.on('connect',function(socket){ });
// 等同
server.of('/').on('connect', function(socket){ });
向所有连接的客户端发送事件
socket 可以理解为服务端与客户端连接而建立的管道,管道两头分别是服务端和客户端。
服务端 socket 监听客户端 socket 发送的事件,也可以向其他房间、其他客户端发送事件。
连接身份的唯一标志,是一段字符串
监听事件客户端 socket 发送的事件
disconnect
事件,当客户端断开时会监听到此事件error
事件,当发生错误时触发socket 向客户端触发事件
// server code
server.on('connection', (socket) => {
socket.emit('chat', 'hello', (data) => {
console.log(data); // data will be 'i got'
});
});
// the client code
client.on('chat', (name, fn) => {
fn('i got');
});
socket 所在房间
进入房间
离开房间
向某房间或其他客户端发送私人消息
客户端 socket 主要作用是连接服务器,向服务端发送事件,和监听服务端发送的事件。
// 导入
// <script src="/socket.io/socket.io.js"></script>
// or
// const io = require('socket.io-client');
// or
import io from 'socket.io-client';
// 建立连接
// 默认地址
const socket = io();
// 指定地址
const socket = io('http://localhost');
// 指定的 namespace
const socket = io('/news');
const socket = io('http://localhost/news');
客户端可监听的各种事件
socket.on('connect', () => {});
socket.on('myevent', () => {});
socket.on('connect_error', (error) => {});
socket.on('connect_timeout', (timeout) => {});
socket.on('error', (error) => {});
socket.on('disconnect', (reason) => {});
socket.on('reconnect', (attemptNumber) => {});
//....
标签:client disco ret 信息 连接 api 其他 require --
原文地址:https://www.cnblogs.com/bfjdbcs/p/12297987.html