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

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

3天内不再提示

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

Linux爱好者 来源:大呜 作者:大呜 2021-10-26 09:22 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

【导读】本文介绍了一个 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 做消息推送

轻量级

持续迭代。。.

部署

安装

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. 聊天机器人

编辑:jq

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

    关注

    6

    文章

    1330

    浏览量

    55306
  • 聊天机器人
    +关注

    关注

    0

    文章

    350

    浏览量

    13135
  • go语言
    +关注

    关注

    1

    文章

    161

    浏览量

    9888

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

文章出处:【微信号:LinuxHub,微信公众号:Linux爱好者】欢迎添加关注!文章转载请注明出处。

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    CIPOS™ Tiny IM393 - S6E:高效电机驱动IPM的全方位解析

    CIPOS™ Tiny IM393 - S6E:高效电机驱动IPM的全方位解析 在当今的家电和小型工业设备中,电机驱动的高效性和可靠性至关重要。CIPOS™ Tiny IM393 - S6E作为一款
    的头像 发表于 05-18 14:45 155次阅读

    CIPOS™ Tiny IM393-L6E:高效集成功率模块的技术解析

    CIPOS™ Tiny IM393-L6E:高效集成功率模块的技术解析 在电子工程领域,对于先进家电电机驱动应用而言,一款性能卓越且设计紧凑的功率模块至关重要。今天我们就来深入探讨英飞凌
    的头像 发表于 05-18 14:35 137次阅读

    深度解析CIPOS™ Tiny IM393 - L6F:助力先进家电电机驱动设计

    深度解析CIPOS™ Tiny IM393 - L6F:助力先进家电电机驱动设计 在当今家电市场,高效节能的电机驱动需求日益增长。英飞凌的CIPOS™ Tiny IM393 - L6F作为一款集成
    的头像 发表于 05-18 14:30 134次阅读

    CIPOS™ Tiny IM393 - L6FP:高效集成功率模块的深度解析

    CIPOS™ Tiny IM393 - L6FP:高效集成功率模块的深度解析 在电子工程师的日常设计中,选择合适的功率模块对于实现高效、可靠的电机驱动至关重要。今天,我们就来深入探讨一下英飞凌
    的头像 发表于 05-18 14:30 148次阅读

    CIPOS™ Micro IM240系列智能功率模块深度解析

    CIPOS™ Micro IM240系列智能功率模块深度解析 在电子工程师的日常设计中,智能功率模块(IPM)是实现高效电机驱动的关键组件。今天,我们就来深入探讨英飞凌的CIPOS™ Micro
    的头像 发表于 05-18 14:15 115次阅读

    高性能数字 XENSIV™ MEMS 麦克风 IM69D130:设计与应用解析

    高性能数字 XENSIV™ MEMS 麦克风 IM69D130:设计与应用解析 在当今的电子设备中,高性能麦克风的需求日益增长,特别是在语音交互、音频录制和噪声消除等领域。英飞凌的 IM
    的头像 发表于 05-18 12:15 265次阅读

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

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

    KIT_XMC14_2GO开发板:功能特性与硬件解析

    KIT_XMC14_2GO开发板:功能特性与硬件解析 在电子开发领域,一款性能出色且功能丰富的开发板对于工程师来说至关重要。今天,我们就来详细探讨一下KIT_XMC14_2GO开发板,它配备了英飞凌
    的头像 发表于 12-19 10:20 726次阅读

    socket是什么

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

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

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

    协议解析网关是什么?有什么功能?

    、OPCUA、HTTP等),并将其转换为目标系统或设备可识别的协议格式,从而实现跨协议的通信与数据交互。 简单来说,协议解析网关就像“翻译官
    的头像 发表于 08-13 14:04 1131次阅读
    协议<b class='flag-5'>解析</b>网关是什么?有什么功能?

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

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

    通用卫星通信模拟仿真系统全面解析

    通用卫星通信模拟仿真系统全面解析
    的头像 发表于 07-28 09:26 1016次阅读
    通用卫星<b class='flag-5'>通信</b>模拟仿真<b class='flag-5'>系统</b>全面<b class='flag-5'>解析</b>

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

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