# socket-server **Repository Path**: JszhaomiBackEnd/socket-server ## Basic Information - **Project Name**: socket-server - **Description**: socket.io 消息通知 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: http://socket.books500.com/ping - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2017-09-25 - **Last Updated**: 2023-11-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 长连接 ### 背景 用户端提供二维码,商户端扫描此二维码,商户端完成二维码扫描后将二维码包含信息传递给服务端,服务端收到通知后开始相应业务流程,待业务流程 完成后,需要将完成状态即时推送给用户端手机。 ### 技术方案 采用 socket: https://socket.io # API ### socket服务器 连接地址为:`socket.books500.com`; 目前`ws`和`wss`都支持。 ### 借 1.发送`init`事件。客户端链接socket.io成功后,需要发送`init`事件,同时将orderId作为参数传递过去。 事件名 | 参数 | 参数含义 ------|------- |------- init | orderId | 将订单id发送给socket服务器 2.监听`borrow_waiting`事件, 店员扫码成功,点击确认前,客户端会收到此事件的通知。 事件名 | 参数 | 参数含义 ------|------- |------- borrow_waiting | orderId | 订单号 3.监听`borrow`事件, 店员点击确认,客户端会收到此事件的通知。 事件名 | 参数 | 参数含义 ------|------- |------- borrow | orderId | 订单号 **web实现参考代码** ```javascript var socket = io(); // 模拟一条orderId var orderId = Date.now(); // socket链接成功之后立刻发送'init'事件,将orderId带过去 socket.emit('init', orderId); // 监听waiting事件,有返回,代表店员扫码成功,但还未点击确认按钮 socket.on('borrow_waiting', function (orderId) { console.log('orderId ' + orderId + '处理完成'); }); // 监听borrow事件,有返回,代表店员点击了确认按钮 socket.on('borrow', function (orderId) { console.log('orderId ' + orderId + '处理完成'); }); ``` ### 还 1.发送`init`事件。客户端链接socket.io成功后,需要发送`init`事件,同时将orderId作为参数传递过去。 事件名 | 参数 | 参数含义 ------|------- |------- init | orderId | 将订单id发送给socket服务器 2.监听`return_waiting`事件, 商户扫描用户二维码后,客户端会收到此事件的通知。 事件名 | 参数 | 参数含义 ------|------- |------- return_waiting | orderId | 订单号 3.监听`return`事件, 还书流程完毕后,客户端会收到此事件的通知。 事件名 | 参数 | 参数含义 ------|------- |------- return | orderId | 订单号 **web实现参考代码** ```javascript var socket = io(); // 模拟一条orderId var orderId = Date.now(); // socket链接成功之后立刻发送'init'事件,将orderId带过去 socket.emit('init', orderId); // 监听waiting事件,有返回,商户扫码成功 socket.on('return_waiting', function (orderId) { console.log('商户扫码成功,但尚未点击确认'); }); // 监听return事件,有返回,代表还书完成 socket.on('return', function (orderId) { console.log('orderId ' + orderId + '处理完成'); }); ``` ### 取消 1.监听`delete`事件, 当用户或店员取消该订单时,客户端会收到此事件的通知。 事件名 | 参数 | 参数含义 ------|------- |------- delete | orderId | 订单号