0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

go语言实现的简单im即时通信系统

马哥Linux运维 来源:Go开发大全 作者:Go开发大全 2021-10-20 16:02 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本文介绍了一个 go 语言实现的简单 im 即时通信系统。

简介

纯go实现的im即时通讯系统,各层可单独部署,之间通过rpc通讯,支持集群,github地址 https://github.com/Terry-Ye/im_api , 学习于goim, 总分三层,

comet(用户连接层),可以直接部署多个节点,每个节点保证serverId 唯一,在配置文件comet.toml

logic(业务逻辑层),无状态,各层通过rpc通讯,容易扩展,支持http接口来接收消息

job(任务推送层)通过redsi 订阅发布功能进行推送到comet层。

系统架构图

时序图

以下Comet 层,Logic 层,Job层都可以灵活扩展机器

特性

分布式,可拓扑的架构

支持单个,房间推送

心跳支持(gorilla/websocket内置)

基于redis 做消息推送

轻量级

持续迭代。。.

部署

  1. 安装
    
goget-ugithub.com/Terry-Ye/im
mv$GOPATH/src/github.com/Terry-Ye/im$GOPATH/src/im
cd$GOPATH/src/im
goget./...

golang.org 包拉不下来的情况,例

packagegolang.org/x/net/ipv4:unrecognizedimportpath"golang.org/x/net/ipv4"(httpsfetch:Gethttps://golang.org/x/net/ipv4?go-get=1:dialtcp216.239.37.1i/otimeout)

从github 拉下来,再移动位置

gitclonehttps://github.com/golang/net.git
mkdir-pgolang.org/x/

mvnet$GOPATH/src/golang.org/x/
  1. 部署im

安装comet、logic、job模块

cd$GOPATH/src/im/comet
goinstall
cd../logic/
goinstall
cd../job
goinstall

nohup$GOPATH/bin/logic-d$GOPATH/src/im/logic/2>&1>/data/log/im/logic.log&

nohup$GOPATH/bin/comet-d$GOPATH/src/im/comet/2>&1>/data/log/im/comet.log&

nohup$GOPATH/bin/job-d$GOPATH/src/im/job/2>&1>/data/log/im/job.log&
  1. im_api 是im系统中使用的接口,需要像demo那样整体跑起来需要完整的部署

部署注意事项

  1. 部署服务器注意防火墙是否开放对应的端口(本地不需要,具体需要的端口在各层的配置文件)

demo

聊天室:http://www.texixi.com:1999/

使用的包

  • log: github.com/sirupsen/logrus
  • rpc: github.com/smallnest/rpcx
  • websocket: github.com/gorilla/websocket
  • 配置文件:github.com/spf13/viper

后续计划

  1. 在线列表
  2. 支持wss
  3. 聊天机器人

原文来自:www.ancii.com/awugjp68e/

编辑:jq
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 通信系统
    +关注

    关注

    6

    文章

    1324

    浏览量

    55286
  • 聊天机器人
    +关注

    关注

    0

    文章

    350

    浏览量

    13126
  • go语言
    +关注

    关注

    1

    文章

    161

    浏览量

    9879

原文标题:支持分布式的 go 实现即时通讯系统

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    CIPOS™ Mini IM564-X6D/IM564-X6DS:助力高效电机驱动设计

    CIPOS™ Mini IM564-X6D/IM564-X6DS:助力高效电机驱动设计 在电子工程师的日常工作中,选择合适的功率模块对于设计出高效、可靠的电机驱动系统至关重要。今天,我们就来深入
    的头像 发表于 05-18 15:10 169次阅读

    CIPOS™ Tiny IM323-L6G/IM323-L6G2:助力电机控制的理想选择

    CIPOS™ Tiny IM323-L6G/IM323-L6G2:助力电机控制的理想选择 在电子工程师的日常工作中,电机控制是一个常见且关键的领域。而CIPOS™ Tiny IM
    的头像 发表于 05-18 14:35 663次阅读

    基于IM3570/IM3533的汽车智能锁天线阻抗测量方案

    IM3570与LCR测试仪IM3533,配合专用4端子探头,对车载智能锁天线进行高精度阻抗测量的解决方案。 智能锁与防盗系统通常工作在低频波段(如125 kHz),通过电磁感应实现无钥
    的头像 发表于 03-24 17:34 694次阅读
    基于<b class='flag-5'>IM</b>3570/<b class='flag-5'>IM</b>3533的汽车智能锁天线阻抗测量方案

    无线生活,“蓝牙”相连——探索蓝牙技术的智能连接世界

    无线个域网的主流技术之一。二、五大核心特点1. 短距高效,即连即用蓝牙设备可自动搜索并快速建立连接,无需复杂配置,实现设备间的即时通信与数据交换。2. 低功耗设计,持久续航蓝牙低功耗模式适用于穿戴设备
    发表于 02-11 09:27

    连接数字的即时纽带

    在数字时代,信息传递的速度决定着我们与世界互动的效率。实时通信(Real-TimeCommunication,RTC)技术正是这一需求的产物,它让数据跨越物理距离,实现近乎瞬时的交换。与传统
    的头像 发表于 01-30 08:40 301次阅读
    连接数字的<b class='flag-5'>即时</b>纽带

    讲解C语言代码的实现过程

    重点讲解C语言代码的实现过程,算法的C语言实现过程具有一般性,通过PID算法的C语言实现,可以以此类推,设计其它算法的C语言实现。 第一步:
    发表于 01-21 07:58

    C语言实现PID算法介绍

    是对目标值和实际值误差进行比例、积分、微分运算后的结果用来作用在输出上。 比例 (P) 比例控制是最简单的一种控制方式,成比例的反应控制系统中输入与输出的偏差信号,只要偏差一旦产生,就立即产生控制的作用
    发表于 01-16 07:24

    无线生活,“蓝牙”相连——探索蓝牙技术的智能连接世界

    无线个域网的主流技术之一。二、五大核心特点1. 短距高效,即连即用蓝牙设备可自动搜索并快速建立连接,无需复杂配置,实现设备间的即时通信与数据交换。2. 低功耗设计,持久续航蓝牙低功耗模式适用于穿戴设备
    发表于 01-14 09:23

    socket是什么

    特定的IP地址和端口上等待客户端连接,客户端则通过Socket连接到服务器程序并进行通信。通过Socket技术,可以实现不同操作系统和编程语言之间的
    发表于 12-03 08:27

    常用Web 实时通信技术:原理+选型,一篇通关

    用的实时通信技术,从概念、原理特点、适用场景、对比选型进行详细解析。 一、WebSocket 1.1、核心概念 WebSocket 是 Web 端实时通信的 “基础设施”,通过 全双工长连接 和 轻量帧传输 ,解决了 HTTP 单向短连接的局限性,成为
    的头像 发表于 10-27 17:19 1256次阅读
    常用Web 实时<b class='flag-5'>通信</b>技术:原理+选型,一篇通关

    即时通话软件音频传输质量测试方案介绍

    本套测试方案的核心目的是通过POLQA(Perceptual Objective Listening Quality Assessment)主观音质评价测试来反映即时通话软件在使用过程中的音频
    的头像 发表于 08-10 15:21 3843次阅读
    <b class='flag-5'>即时通</b>话软件音频传输质量测试方案介绍

    智己IM5和IM6登陆英国市场

    近日,智己汽车全球化战略迎来里程碑时刻。旗下明星车型——智己L6海外版IM5与智己LS6海外版IM6,盛大亮相全球顶级汽车盛会古德伍德速度节(Goodwood Festival of Speed
    的头像 发表于 07-15 13:50 1040次阅读

    基于瑞芯微RK3562 的四核 AR M Cortex-A53 + 单核 ARM Cortex-M0工业评估板——MQTT通信方案

    MQTT作为一种低开销,低带宽占用的即时通讯协议,可以极少的代码和带宽为联网设备提供实时可靠的消息服务,适用于硬件资源有限的设备及带宽有限的网络环境。我司提供的评估板文件系统已支持Mosquitto工具,本文mqtt_client案例采用Mosquitto工具演示MQTT
    的头像 发表于 06-05 15:00 2085次阅读
    基于瑞芯微RK3562 的四核 AR M Cortex-A53 + 单核 ARM Cortex-M0工业评估板——MQTT<b class='flag-5'>通信</b>方案

    鸿蒙5开发宝藏案例分享---一多开发实例(即时通讯)

    们准备好了超多实用开发案例!尤其是那个让无数人头疼的\"一次开发多端部署\",官方竟然悄悄塞了这么多实战技巧!(拍大腿) ?先上硬核案例:即时通讯应用的多端魔法? 官方这个即时通
    发表于 06-03 16:01