Socket.io 是面向实时应用的库,它允许服务器和客户端进行实时双向通信。这样的通信方式相比传统 HTTP 请求,实时性更高,适用于在线协作、即时聊天等应用场景。
Socket.io API 完整版
服务器端 API
1. 创建 Socket.io 服务器
var io = require('socket.io')(http);创建 Socket.io 服务器实例,将其绑定到一个 HTTP 服务器上。
2. 事件监听
服务器可以监听多种事件,例如连接、断开连接、发送消息等。
-- -------------------- ---- -------
------------------- -----------------
-------------- ---- ------------
----------------------- ---------- -
----------------- ---------------
---
--------------- --------- ------------- -
--------------------- - - -----
---
---监听连接事件,并为连接成功的 socket 注册一系列事件处理函数。
3. 发送消息
io.emit('chat message', msg);将消息广播给所有连接的客户端。
4. 房间
Socket.io 中的房间(room)是一种组织方式,可以将多个 Socket 分组管理。将一个 Socket 加入房间可以使用以下方式:
socket.join('roomName');将一个 Socket 从房间中移除:
socket.leave('roomName');向某个房间广播消息:
io.to('roomName').emit('eventName', data);客户端 API
1. 连接 Socket.io 服务器
var socket = io();
连接到默认 IP 地址的服务器。
var socket = io('http://localhost:3000');连接到指定的服务器。
2. 事件监听
-- -------------------- ---- ------- -------------------- ---------- - ------------------------- --- ------------------ -------------- - ------------------ --- ----------------------- ---------- - ---------------------------- ---
监听服务器发送的事件,例如连接成功、收到消息、断开连接等。
3. 发送消息
socket.emit('chat message', msg);向服务器发送消息。
4. 房间
将当前 Socket 加入房间:
socket.join('roomName');将当前 Socket 从房间中移除:
socket.leave('roomName');向某个房间广播消息:
socket.to('roomName').emit('eventName', data);使用方法
安装
在 node.js 环境中,使用以下命令安装:
npm install socket.io
服务器端使用
-- -------------------- ---- ------- --- ---- - ---------------- --- ------ - -------------------- --- -- - ----------------------------- ------------------- -------- -------- - ---------------------- ------- --------- --- --------------------
客户端使用
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io();
socket.on('message', function (data) {
alert(data);
});
</script>示例代码
以下为一个简单的实时聊天应用的示例代码:
服务器端:
-- -------------------- ---- -------
--- ---- - ----------------
--- ------ - --------------------
--- -- - -----------------------------
--------------------
------------------- -------- -------- -
-------------- ---- ------------
----------------------- ---------- -
----------------- ---------------
---
--------------- --------- ------------- -
--------------------- - - -----
------------- --------- -----
---
---客户端:
-- -------------------- ---- -------
--------- -----
------
------
---------------- ------------
-------
- - ------- -- -------- -- ----------- ----------- -
---- - ----- ---- ---------- ------ ---------- ------ ----------- ------------ ------ ----------- ----- ------ ----- -------- ----- -
------------------ - -------- ----- ---------- ------ ------- ----- ----------- ----- ------------- ----- -
------ - -------- ----- ---------- ------ ------- ----- ----------- -------- ------ ----- ------- -------- -
-- - ----------- ----- ----------- ----- -
-- - -------- ----- -------------- ----- ----------- -------- ------ ----- -
--------- - ------ ----- -
---------- - ------ ----- -
----------- - ------ ------ -
--------
------- ---------------------------------------
--------
--- ------ - -----
--- ----------- - ---------------------------------------
--- ------------ - ----------------------------------------
--- ----------- - ---------------------------------------
-------------------------------------- --------------- -
-----------------------
----------------- --------- --------------------
------------------ - ---
---
--------------- --------- ------------- -
--- -- - -----------------------------
-------------- - ----
----------------------------
---
---------
-------
------
--- ----------------------
----- -----------------
------ ----------- ------------------
------- ---------------------------
-------
-------
-------在浏览器中访问 http://localhost:3000 即可使用该应用。
Source: FunTeaLearn,Please indicate the source for reprints https://funteas.com/post/67ce86ace46428fe9e8da8e5