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

    文章

    1247

    浏览量

    54968
  • 聊天机器人
    +关注

    关注

    0

    文章

    348

    浏览量

    13036
  • go语言
    +关注

    关注

    1

    文章

    159

    浏览量

    9625

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    socket是什么

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

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

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

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

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

    海底光缆系统怎么组成

    在数字浪潮席卷全球的当下,短视频的沉浸式体验、跨国即时通讯的畅所欲言以及全天候全球资讯的实时推送,早已成为我们生活的日常。
    的头像 发表于 07-21 14:45 761次阅读

    智己IM5和IM6登陆英国市场

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

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

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

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

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

    单片机C语言实例(350+例)

    350+单片机C语言实例! 纯分享帖,需要者可点击附件免费获取完整资料~~~【免责声明】本文系网络转载,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请第一时间告知,删除内容!
    发表于 05-22 21:47

    从 Java 到 Go:面向对象的巨人与云原生的轻骑兵

    Go 语言在 2009 年被 Google 推出,在创建之初便明确提出了“少即是多(Less is more)”的设计原则,强调“以工程效率为核心,用极简规则解决复杂问题”。它与 Java 语言生态
    的头像 发表于 04-25 11:13 508次阅读

    基于Verilog语言实现CRC校验

    CRC即循环冗余校验码:是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。
    的头像 发表于 03-24 10:36 2179次阅读
    基于Verilog<b class='flag-5'>语言实现</b>CRC校验

    限时免积分下载:增量式与位置式PID算法的C语言实现分享

    前面咱们有分享对PID算法离散化和增量式PID算法原理进行来探索,之后又使用Matlab进行了仿真实验,对PID三个参数又有了更深入的认识,接下来我们来使用C语言进行PID算法实现,并且结合控制电机的项目来深入学习。 今天限时免积分下载哦~~~~
    发表于 03-05 18:32

    PID控制算法的C语言实现:PID算法原理

    在工业应用中 PID 及其衍生算法是应用最广泛的算法之一,是当之无愧的万能算法,如果能够熟练掌握 PID 算法的设计与实现过程,对于一般的研发人员来讲,应该是足够应对一般研发问题了,而难能可贵
    发表于 02-26 15:24

    华为云 Flexus X 实例云服务器部署即时通IM 项目

    @TOC   写在前面 手里拿到了一台 华为云 Flexus X 实例 的云服务器,部署部署项目试试看看性能怎么样。正当华为云 828 上云活动,可领 8280 元的券,活动地址在这里:点我查看   让我们来看看干点什么呢?部署个实用的应用吧~ Flexus X 实例云服务器 介绍 首先,flexus 系列的产品不止有云服务器,还有如下一些产品: 1. Flexus L 实例的云服务器 2. Flexus X 实例的云服务器 3. Flexus 云数据库 RDS 4. Flexus 云容器实例 5. Flexus 数字人 6. Flexus 企业搜索服务 7. Fle
    的头像 发表于 02-07 10:15 691次阅读
    华为云 Flexus X 实例云服务器部署<b class='flag-5'>即时通</b>讯 <b class='flag-5'>IM</b> 项目

    基于FPGA实现图像直方图设计

    简单,单采用FPGA来实现直方图的统计就稍显麻烦。若使用Xilinx和Altera的FPGA芯片,可以使用HLS来进行图像的加速处理。但这暂时不是我的重点。 用C语言实现直方图统计:unsigned
    的头像 发表于 12-24 10:24 1198次阅读
    基于FPGA<b class='flag-5'>实现</b>图像直方图设计

    影目科技发布全球首款同传翻译眼镜INMO GO2

    近日,搭载紫光展锐W517芯片平台的INMO GO2由影目科技正式推出。作为全球首款专为商务场景设计的智能翻译眼镜,INMO GO2 以“快、准、稳”三大核心优势,突破传统翻译产品局限,为全球商务人士带来高效、自然、稳定的跨语言
    的头像 发表于 12-11 10:00 1948次阅读