精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

    文章

    1176

    瀏覽量

    53290
  • 聊天機器人
    +關注

    關注

    0

    文章

    332

    瀏覽量

    12295
  • go語言
    +關注

    關注

    1

    文章

    158

    瀏覽量

    9032

原文標題:支持分布式的 go 實現即時通訊系統

文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    在學習go語言的過程踩過的坑

    作為一個5年的phper,這兩年公司和個人都在順應技術趨勢,新項目慢慢從php轉向了go語言,從2021年到現在,筆者手上也先后開發了兩個go項目。在學習go
    的頭像 發表于 11-11 09:22 ?114次閱讀

    使用C語言實現函數模板

      用C語言能不能實現一個通用的函數,既能完成整數的相加,又能完成浮點數的相加?
    的頭像 發表于 11-09 11:38 ?299次閱讀

    go語言如何解決并發問題

    作為一個后端開發,日常工作中接觸最多的兩門語言就是PHP和GO了。無可否認,PHP確實是最好的語言(手動狗頭哈哈),寫起來真的很舒爽,沒有任何心智負擔,字符串和整型壓根就不用區分,開發速度真的是比
    的頭像 發表于 10-23 13:38 ?113次閱讀
    <b class='flag-5'>go</b><b class='flag-5'>語言</b>如何解決并發問題

    三十分鐘入門基礎Go Java小子版

    前言 Go語言定義 Go(又稱 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 開發的一種靜態、強類型、編譯型語言
    的頭像 發表于 08-12 14:32 ?682次閱讀
    三十分鐘入門基礎<b class='flag-5'>Go</b> Java小子版

    如何用C語言實現高效查找(二分法)

    今天給分享一下使用C語言實現二分算法,主要包含以下幾部分內容:二分查找算法介紹二分查找算法使用場景二分查找算法代碼實現二分查找算法實現過程用C語言實現二分法查找二分查找也稱折半查找
    的頭像 發表于 06-04 08:04 ?992次閱讀
    如何用C<b class='flag-5'>語言實現</b>高效查找(二分法)

    使用C語言實現的CRC計算單元的例子

    使用C語言實現的CRC計算單元的例子
    的頭像 發表于 05-16 16:16 ?869次閱讀

    HarmonyOS開發案例:【Web組件實戰】

    使用ArkTS語言實現一個簡單的免登錄過程,向大家介紹基本的cookie管理操作。
    的頭像 發表于 04-28 17:30 ?1267次閱讀
    HarmonyOS開發案例:【Web組件實戰】

    C語言實現Web參數傳遞

    電子發燒友網站提供《C語言實現Web參數傳遞.docx》資料免費下載
    發表于 03-24 09:14 ?2次下載

    學習筆記|如何用Go程序采集溫濕度傳感器數據

    在共創社內部的交流中,先前有一位成員展示了如何借助C語言實現對AHT20溫濕度傳感器數據的讀取。這一實例觸發了另一位共創官的靈感,他決定采納Go語言重新構建這一數據采集流程。接下來,
    的頭像 發表于 03-21 11:46 ?649次閱讀
    學習筆記|如何用<b class='flag-5'>Go</b>程序采集溫濕度傳感器數據

    GitHub Copilot+ESP開發實戰-串口

    上篇文章講了GitHubCopilot在應用中可能遇到的問題,接下來小啟就簡單介紹下GitHubCopilot在ESP32開發中C語言實現串口功能,感興趣的可以看看。一、向Copilot提問
    的頭像 發表于 03-16 08:03 ?440次閱讀
    GitHub Copilot+ESP開發實戰-串口

    ArkTS語言基礎類庫-解析

    ArkTS語言基礎類庫是HarmonyOS系統上為應用開發者提供的常用基礎能力,主要包含能力如下圖所示。 圖1 ArkTS語言基礎類庫能力示意圖 提供[異步并發和多線程并發]的能力。 支持
    發表于 02-20 16:44

    如何與stm32的IM69D130 PDM接口連接通信,使用什么總線協議?

    如何與stm32的 IM69D130 PDM接口連接通信,使用什么總線協議?
    發表于 01-29 06:06

    ADUC7061如何使用C語言實現EEPROM功能?

    我使用ADUC7061做的信號采集,現在客戶需要實現EEPROM功能來保存3-5個數據,請問如何使用C語言實現?不使用外部EEPROM 專用IC。
    發表于 01-12 06:56

    使用go語言實現一個grpc攔截器

    在開發grpc服務時,我們經常會遇到一些通用的需求,比如:日志、鏈路追蹤、鑒權等。這些需求可以通過grpc攔截器來實現。本文使用go語言實現一個 grpc一元模式(Unary)攔截器
    的頭像 發表于 12-18 10:13 ?638次閱讀
    使用<b class='flag-5'>go</b><b class='flag-5'>語言實現</b>一個grpc攔截器

    Go編程語言-你應該知道的一切

    Go 編程語言的故事始于 Google,當時三位工程師 Robert Griesemer、Rob Pike 和 Ken Thompson 對 C++ 的復雜性以及缺乏提供高效編譯和執行的簡單
    的頭像 發表于 12-11 17:37 ?620次閱讀