栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Egg - socket.io

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Egg - socket.io

起步

我们都知道,ajax是客户端请求服务端(单向),服务端不能够主动给我发送消息

有时候我们在web开发的时候,需要服务端主动向客服端发送消息,这个时候我们就需要用到双工通讯 - socket,当然非常老旧的项目也可以通过ajax轮询解决实时通讯的问题


服务端 - 开始

npm i --save egg-socket.io

config/plugin.js

exports.io = {
  enable: true,
  package: "egg-socket.io",
};

config/config.default.js

exports.io = {
  namespace: {
    "/": {
      connectionMiddleware: ["connection"],
      packetMiddleware: ["receive"],
    },
  },
};

app下创建socket目录app/.io

  app/io

         controller 

             visited.js

         middleware    

             connection.js  创建链接中间件

             receive.js socket服务端收到客服端参数走得中间件

app/io/controller/visited.js

const { Controller } = require("egg");

class VisitedController extends Controller {
  async server() {
    const { ctx, app } = this;
    const visitedCount = await ctx.service.app.get();
    const visited = Number(visitedCount[0].visited) + 1;
    const result = await ctx.service.app.set(visited);
    // 默认调用一次controller,将访问量传递给前端
    // 前端页面访问时,调用visitedServer继续调用本控制器,更新visited访问量
    await ctx.socket.server.emit("CustomVisited", visited);
  }
}

module.exports = VisitedController;

app/io/middelware/connection.js

module.exports = (app) => {
  return async (ctx, next) => {
    // 通知全体
    ctx.socket.emit("res", "connected!");
    await next();
    // execute when disconnect.
    console.log("disconnection!");
  };
};

  app/io/middelware/receive.js

module.exports = (app) => {
  // socket接收到参数的预处理
  return async (ctx, next) => {
    // console.log(ctx.packet);
    await next();
    // execute when disconnect.
    console.log("socket 收到了些参数都会走这里!");
  };
};

 app/router.js

"use strict";


module.exports = (app) => {
  const { router, controller, io } = app;
  
  // io.of('/') socket链接的命名空间
  // route('server') socket 客户端发送server事件时
  io.of("/").route("visitedServer", io.controller.visited.server);
};
客户端-开始
npm i --save vue-socket.io

main.js






转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/704196.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号