Giter Club home page Giter Club logo

agileim's Introduction

项目结构介绍

AgileIM.Client ,客户端项目

AgileM.IM 类库,IM的核心类

AgileIM.Service,IM的接口层,集成IdentityServer4鉴权与授权

AgileIM.Shared,IM共享层,存放公用的一些方法和模型

AgileIM.Web,IM Web项目

项目介绍:

​ 使用WebSocket+redis 做即时通讯服务,客户端用websocket协议,webApi 负责业务,调用AgileIM.IM中的发送消息以及创建群组的方法,并将数据推送到Redis, Redis使用发布订阅形式,Redis5.0 新增Stream方式追加消息,这里就要科普一下Redis5.0的Stream了,Stream是一个强大的支持多播的可持久化的消息队列,它借鉴了Kafka的设计,Redis Stream 它有一个消息链表,将所有加入的消息都串起来,每个消息都有一个唯一的 ID 和对应的内容。消息是持久化的,Redis 重启后,内容还在,消费者内部会有个状态变量,它记录了当前已经被客户端读取的消息,但是还没有 ack。如果客户端没有 ack,这个变量里面的消息 ID 会越来越多,一 旦某个消息被 ack,它就开始减少。这个变量在 Redis 官方被称之为PEL,也就是 Pending Entries List,这是一个很核心的数据结构,它用来确保客户端至少消费了消息一 次,而不会在网络传输的中途丢失了没处理,所以使用Redis做即时通讯是可以进行尝试的。

​ 优点:

  1. 分离IM和业务,让IM更纯粹,只负责维护连接,消息推送与转发
  2. 使用websocket协议保证多端协议统一
  3. 支持集群,

​ 进展:

​ 目前客户端项目界面已经差不多结束,再优化优化界面就进行下一步操作。

​ 下一步计划:

  • 数据库数据表设计

  • webApi业务接口编写

  • WPF客户端数据交互

  • Web端 界面设计以及数据交互 考虑使用( VUE,Blazor,MVC)的其中一种

    tips:因为真正编码时间没有想象的那么多,所以进度可能不会很快。


AgileIM.Client (WPF) 运行界面示例

20220518133047 image-20220420091836346 image-20220420091922888 image-20220420092021553 image-20220420092047740 image-20220420092107408 image-20220420092141415

agileim's People

Contributors

xwang-888 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.