WebSocket & Redis 快速入门
正在加载今日诗词....
2022-05-25

WebSocket & Redis 快速入门

WebSocket 入门

什么是 WebSocket?

WebSocket 基本概念:https://www.runoob.com/html/html5-websocket.html

WebSocket 开发流程

WebSocket 开发流程:https://eggjs.org/zh-cn/tutorials/socketio.html

WebSocket 服务开发流程

  1. 安装依赖
npm i -S egg-socket.io
  1. 更新配置文件
// config.default.js
config.io = {
  namespace: {
    '/': {
      connectionMiddleware: ['auth'],
      packetMiddleware: ['filter'],
    },
    '/chat': {
      connectionMiddleware: ['auth'],
      packetMiddleware: [],
    },
  },
};

// plugin.js
exports.io = {
  enable: true,
  package: 'egg-socket.io',
};
  1. 修改路由配置
// 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);
  1. 开发 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!');
  };
};
  1. 开发 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 安装方法

Redis 开发流程

Redis 开发流程:https://www.npmjs.com/package/egg-redis

Copyright © 2022 @filway

  • ☀️
  • 🌑