欢迎访问宙启技术站
智能推送

socketio服务器实现实时通信

发布时间:2023-12-14 00:36:13

Socket.io是一个基于HTTP协议的实时通信框架,可用于构建实时聊天、数据传输等应用。

Server端实现:

1. 首先,使用Node.js创建一个服务器,引入socket.io库并监听服务器端口。

   const express = require('express');
   const app = express();
   const http = require('http').createServer(app);
   const io = require('socket.io')(http);

   http.listen(3000, () => {
     console.log('Server started on port 3000');
   });
   

2. 在服务器端使用socket.io的connection事件处理客户端的连接。

   io.on('connection', (socket) => {
     console.log('A user connected');

     // 监听客户端发送的消息
     socket.on('chat message', (msg) => {
       console.log('message: ' + msg);
       // 广播消息给所有连接的客户端
       io.emit('chat message', msg);
     });

     // 监听客户端断开连接事件
     socket.on('disconnect', () => {
       console.log('A user disconnected');
     });
   });
   

3. 在客户端引入socket.io库,连接到服务器并监听事件。

   <script src="/socket.io/socket.io.js"></script>
   <script>
     // 连接到服务器
     const socket = io();

     // 发送消息给服务器
     socket.emit('chat message', 'Hello, Server!');

     // 监听服务器发送的消息
     socket.on('chat message', (msg) => {
       console.log('message: ' + msg);
     });

     // 断开连接
     socket.on('disconnect', () => {
       console.log('Disconnected from server');
     });
   </script>
   

使用例子:

1. 启动服务器:在终端中进入项目目录,执行node server.js启动服务器。

2. 打开浏览器,访问http://localhost:3000,可以看到控制台打印出Server started on port 3000的消息。

3. 打开浏览器的开发者工具,切换到控制台,可以看到A user connected的消息。

4. 在浏览器的控制台输入socket.emit('chat message', 'Hello, Server!');回车,可以看到服务器的控制台中打印出message: Hello, Server!的消息,并广播给所有客户端。

5. 在浏览器的控制台输入socket.disconnect();回车,可以看到服务器的控制台中打印出A user disconnected的消息。

以上就是使用Socket.io实现实时通信的基本步骤。通过监听客户端的连接和断开事件,以及发送和接收消息的事件,可以实现实时通信功能。