WebSocket & Redis 快速入门
正在加载今日诗词....2022-05-25
- WebSocket 入门
- 什么是 WebSocket?
- WebSocket 开发流程
- WebSocket 服务开发流程
- WebSocket 客户端开发流程
- Redis 入门
- 什么是 Redis?
- Redis 安装方法
- Redis 开发流程
WebSocket & Redis 快速入门
WebSocket 入门
什么是 WebSocket?
WebSocket 基本概念:https://www.runoob.com/html/html5-websocket.html
WebSocket 开发流程
WebSocket 开发流程:https://eggjs.org/zh-cn/tutorials/socketio.html
WebSocket 服务开发流程
- 安装依赖
npm i -S egg-socket.io
- 更新配置文件
// config.default.js
config.io = {
namespace: {
'/': {
connectionMiddleware: ['auth'],
packetMiddleware: ['filter'],
},
'/chat': {
connectionMiddleware: ['auth'],
packetMiddleware: [],
},
},
};
// plugin.js
exports.io = {
enable: true,
package: 'egg-socket.io',
};
- 修改路由配置
// router.js
// app.io.of('/')
app.io.route('chat', app.io.controller.chat.index);
// app.io.of('/chat')
app.io.of('/chat').route('chat', app.io.controller.chat.index);
- 开发 middleware
// app/io/middleware/auth.js
'use strict';
module.exports = () => {
return async (ctx, next) => {
const say = await ctx.service.user.say();
ctx.socket.emit('res', 'auth!' + say);
await next();
console.log('disconnect!');
};
};
- 开发 controller
// app/io/controller/chat.js
'use strict';
module.exports = app => {
class Controller extends app.Controller {
async index() {
const message = this.ctx.args[0];
console.log('chat :', message + ' : ' + process.pid);
const say = await this.ctx.service.user.say();
this.ctx.socket.emit('res', say);
}
}
return Controller;
};
WebSocket 客户端开发流程
// or http://127.0.0.1:7001/chat
const socket = require('socket.io-client')('http://127.0.0.1:7001');
socket.on('connect', () => {
console.log('connect!');
socket.emit('chat', 'hello world!');
});
socket.on('res', msg => {
console.log('res from server: %s!', msg);
});
Redis 入门
什么是 Redis?
Redis 基本概念:https://www.runoob.com/redis/redis-tutorial.html
Redis 安装方法
- Windows & Linux:https://www.runoob.com/redis/redis-install.html
- MacOS:https://www.cnblogs.com/pangkang/p/12612292.html
Redis 开发流程
Redis 开发流程:https://www.npmjs.com/package/egg-redis
Copyright © 2022 @filway