Open-IM-Server is open source instant messaging Server.Backend in Go.

Overview

Open-IM-Server

avatar

LICENSE Language

Open-IM-Server: Open source Instant Messaging Server

Instant messaging server. Backend in pure Golang, wire transport protocol is JSON over websocket.

Everything is a message in Open-IM-Server, so you can extend custom messages easily, there is no need to modify the server code.

Using microservice architectures, Open-IM-Server can be deployed using clusters.

By deployment of the Open-IM-Server on the customer's server, developers can integrate instant messaging and real-time network capabilities into their own applications free of charge and quickly, and ensure the security and privacy of business data.

Features

  • Everything in Free

  • Scalable architecture

  • Easy integration

  • Good scalability

  • High performance

  • Lightweight

  • Supports multiple protocols

Community

Quick start

Installing Open-IM-Server

Building from Source

Open-IM relies on five open source high-performance components: ETCD, MySQL, MongoDB, Redis, Kafka. Before you deploy Open-IM-Server privately, please make sure that you have installed the above five components and check the component connection parameters in the configuration file. you must install the missing components first,If your server does not have the above components. It is recommended to use it directly, if you have the above components, if not, Docker installation is recommended, which is faster and more convenient.

  1. Install Go environment. Make sure Go version is at least 1.15.

  2. Git clone Open-IM project

    git clone https://github.com/OpenIMSDK/Open-IM-Server.git
    
  3. Open config.yaml,then modify the following parameters.

    • Check or modify the Etcd connection parameters.

      etcd:
        etcdAddr: [ 127.0.0.1:2379 ]
      
    • Check or modify database(MySQL) connection parameters are correct for your database.

      mysql:
        dbAddress: [ 127.0.0.1:3306 ]
        dbUserName: xxx
        dbPassword: xxx
        dbDatabaseName: openIM
      
    • Check or modify database(MongoDB) connection parameters are correct for your database.No authentication mode if dbUserName and dbPassword is empty else authentication

      mongo:
      dbAddress: [ 127.0.0.1:27017 ]
        dbUserName:
        dbPassword:
      
    • Check or modify Redis connection parameters.No authentication mode if dbPassword is empty else authentication

      redis:
        dbAddress: [ 127.0.0.1:6379 ]
        dbPassWord: 
      
    • Check or modify Kafka connection parameters.

      kafka:
        ws2mschat:
          addr: [ 127.0.0.1:9092 ]
        ms2pschat:
          addr: [ 127.0.0.1:9092 ]
      
  4. Database initializer:

  • MySQL

    1. Shell authorization

      chmod +x *.sh
      
    2. Enter the script directory and execute mysql_database_init.sh

      #1.Enter the directory 
      cd Open-IM-server/scrip
      
      #2.execute the shell
      ./mysql_database_init.sh
      
  1. Build and start Service.

    1. Execute the build shell

      ./build_all_service.sh
      
    2. Start service

      ./start_all.sh
      

Using Docker to run Open-IM-Server

Open-IM relies on five open source high-performance components: ETCD, MySQL, MongoDB, Redis, Kafka. Before you deploy Open-IM-Server privately, please make sure that you have installed the above five components and check the component connection parameters in the configuration file. you must install the missing components first,If your server does not have the above components. It is recommended to use it directly, if you have the above components, if not, Docker installation is recommended, which is faster and more convenient.

All images are available at https://hub.docker.com/r/lyt1123/open_im_server

  1. Install Docker 1.13 or above.

  2. Pull Open_IM_Server Image from docker

    docker pull docker.io/lyt1123/open_im_server:[tag]
    #eg
    docker pull docker.io/lyt1123/open_im_server:1.0
    
  3. External config file,the container comes with a built-in config file which can be customized with values from the environment variables .If changes are extensive it may be more convenient to replace the built-in config file with a custom one. In that case map the config file located on your host.

    • Create configuration folder directory

      mkdir -p open_im_server/config
      
    • Download the config.yaml file from github, then modify the following parameters

      • Check or modify the ETCD connection parameters.
      etcd:
        etcdAddr: [ 127.0.0.1:2379 ]
      
      • Check or modify database(MySQL) connection parameters are correct for your database.
      mysql:
        dbAddress: [ 127.0.0.1:3306 ]
        dbUserName: xxx
        dbPassword: xxx
      
      • Check or modify database(MongoDB) connection parameters are correct for your database.No authentication mode if dbUserName and dbPassword is empty else authentication
      mongo:
      dbAddress: [ 127.0.0.1:27017 ]
        dbUserName:
        dbPassword:
      
      • Check or modify the Redis connection parameters.No authentication mode if dbPassword is empty else authentication
      redis:
        dbAddress: [ 127.0.0.1:6379 ]
        dbPassWord: 
      
      • Check or modify the Kafka connection parameters.
      kafka:
        ws2mschat:
          addr: [ 127.0.0.1:9092 ]
        ms2pschat:
          addr: [ 127.0.0.1:9092 ]
      
  4. Upload the config.yaml file that you modified to the open_im_server/config that you create in the server.

  5. Start Open-IM-Server image

    docker run -p 10000:10000 -p 17778:17778 --name open_im_server -v /home/open_im_server/logs:/home/open_im_server/logs -v /home/open_im_server/config/config.yaml:/home/open_im_server/config/config.yaml --restart always -d docker.io/lyt1123/open_im_server:1.0
    
    • -p 10000:10000 The container port maps the host 10000 port, provides api service.
    • -p 17778:17778 The container port maps the host 17778 port, provides message services.
    • --name open_im_server Container service name
    • -v /home/open_im_server/logs:/home/open_im_server/logs The container log directory maps the host directory
    • -v /home/open_im_server/config/config.yaml:/home/open_im_server/config/config.yaml The container configuration file maps the host configuration file
    • --restart always Automatically start when the container is closed abnormally
    • -d Running service in the background

CONFIGURATION INSTRUCTIONS

Open-IM configuration is divided into basic component configuration and business internal service configuration. Developers need to fill in the address of each component as the address of their server component when using the product, and ensure that the internal service port of the business is not occupied

Basic Component Configuration Instructions

  • ETCD

    • Etcd is used for the discovery and registration of rpc services, etcd Schema is the prefix of the registered name, it is recommended to modify it to your company name, etcd address (ip+port) supports clustered deployment, you can fill in multiple ETCD addresses separated by commas, and also only one etcd address.
  • MySQL

    • mysql is used for full storage of messages and user relationships. Cluster deployment is not supported for the time being. Modify addresses and users, passwords, and database names.
  • Mongo

    • Mongo is used for offline storage of messages. The default storage is 7 days. Cluster deployment is temporarily not supported. Just modify the address and database name.
  • Redis

    • Redis is currently mainly used for message serial number storage and user token information storage. Cluster deployment is temporarily not supported. Just modify the corresponding redis address and password.
  • Kafka

    • Kafka is used as a message transfer storage queue to support cluster deployment, just modify the corresponding address

Internal Service Configuration Instructions

  • credential&&push

    • The Open-IM needs to use the three-party offline push function. Currently, Tencent's three-party push is used. It supports IOS, Android and OSX push. This information is some registration information pushed by Tencent. Developers need to go to Tencent Cloud Mobile Push to register the corresponding information. If you do not fill in the corresponding information, you cannot use the offline message push function
  • api&&rpcport&&longconnsvr&&rpcregistername

    • The api port is the http interface, longconnsvr is the websocket listening port, and rpcport is the internal service startup port. Both support cluster deployment. Make sure that these ports are not used. If you want to open multiple services for a single service, fill in multiple ports separated by commas. rpcregistername is the service name registered by each service to the registry etcd, no need to modify
  • log&&modulename

    • The log configuration includes the storage path of the log file, and the log is sent to elasticsearch for log viewing. Currently, the log is not supported to be sent to elasticsearch. The configuration does not need to be modified for the time being. The modulename is used to split the log according to the name of the service module. The default configuration is fine.
  • multiloginpolicy&&tokenpolicy

    • Open-IM supports multi-terminal login. Currently, there are three multi-terminal login policies. The PC terminal and the mobile terminal are online at the same time by default. When multiple policies are configured to be true, the first policy with true is used by default, and the token policy is the generated token policy. , The developer can customize the expiration time of the token

SCRIPT DESCRIPTION

Open-IM script provides service compilation, start, and stop scripts. There are four Open-IM script start modules, one is the http+rpc service start module, the second is the websocket service start module, then the msg_transfer module, and the last is the push module

  • path_info.cfg&&style_info.cfg&&functions.sh
    • Contains the path information of each module, including the path where the source code is located, the name of the service startup, the shell print font style, and some functions for processing shell strings
  • build_all_service.sh
    • Compile the module, compile all the source code of Open-IM into a binary file and put it into the bin directory
  • start_rpc_api_service.sh&&msg_gateway_start.sh&&msg_transfer_start.sh&&push_start.sh
    • Independent script startup module, followed by api and rpc modules, message gateway module, message transfer module, and push module
  • start_all.sh&&stop_all.sh
    • Total script, start all services and close all services

Server-side authentication api graphic explanation of the login authentication process

  • User Register

    • Request URL

      http://x.x.x.x:10000/auth/user_register
      
    • Request method

      POST
      
    • Parameter

      parameter name required Type Description
      secret Y string The secret key used by the app server to connect to the sdk server. The maximum length is 32 characters. It must be ensured that the secret keys of the app server and the sdk server are the same. There is a risk of secret leakage, and it is best to save it on the user server.
      platform Y int Platform type iOS 1, Android 2, Windows 3, OSX 4, WEB 5, applet 6, linux 7
      uid Y string User ID, with a maximum length of 64 characters, must be unique within an APP
      name Y string User nickname, the maximum length is 64 characters, can be set as an empty string
      icon N string User avatar, the maximum length is 1024 bytes, can be set as an empty string
      gender N int User gender, 0 means unknown, 1 means male, 2 female means female, others will report parameter errors
      mobile N string User mobile, the maximum length is 32 characters, non-Mainland China mobile phone numbers need to fill in the country code (such as the United States: +1-xxxxxxxxxx) or the area code (such as Hong Kong: +852-xxxxxxxx), which can be set as an empty string
      birth N string The birthday of the user, the maximum length is 16 characters, can be set as an empty string
      email N string User email, the maximum length is 64 characters, can be set as an empty string
      ex N string User business card extension field, the maximum length is 1024 characters, users can extend it by themselves, it is recommended to encapsulate it into a JSON string, or set it to an empty string
    • Return Parameter

      {
         "errCode": 0,
         "errMsg": "",
         "data":{
            "uid": "",
            "token": "",
            "expiredTime": 0,
         }
      }
      
  • Refresh Token

    • Request URL

      http://x.x.x.x:10000/auth/user_token
      
    • Request method

      POST
      
    • Parameter

      parameter name required Type Description
      secret Y string The secret key used by the app server to connect to the sdk server. The maximum length is 32 characters. It must be ensured that the secret keys of the app server and the sdk server are the same. There is a risk of secret leakage, and it is best to save it on the user server.
      platform Y int Platform type iOS 1, Android 2, Windows 3, OSX 4, WEB 5, applet 6, linux 7
      uid Y string User ID, with a maximum length of 64 characters, must be unique within an APP
    • Return Parameter

      {
         "errCode": 0,
         "errMsg": "",
         "data":{
            "uid": "",
            "token": "",
            "expiredTime": 0,
         }
      }
      
  • API call description

    app:app client
    app-server:app server
    open-im-sdk:open-im source sdk
    open-im-server:open-im source sdk service 
    
  • Authentication Clow Chart

avatar

Architecture

avatar

License

Open-IM-Server is under the Apache 2.0 license. See the LICENSE file for details.

Comments
  • 服务端部署时启动sdk_server失败

    服务端部署时启动sdk_server失败

    If you are deploying OpenIM for the first time sdk_server的启动脚本sdk_svr_start.sh中,包含了两条无法识别的参数,会导致服务端程序启动失败。分别是: -openIM_ws_address 截图如下: image 和-openIM_api_address, image

    同时配置文件中的日志级别后面需加一个空格,否则读取日志级别时也会报错。 截图如下: image

    opened by YangShizhao 11
  • 克隆代码失败

    克隆代码失败

    If you are deploying OpenIM for the first time

    尝试按照教程流程克隆代码,但clone指令报错。

    使用的clone指令为:

    git clone https://github.com/OpenIMSDK/Open-IM-Server.git --recursive
    

    报错信息为:

    获取了子模组路径 'cmd/Open-IM-SDK-Core',但是它没有包含 3cf486771bbe7ecb33f7e7c3cdf733f28b16d8b7。直接获取该提交失败。
    

    截图如下: image

    opened by YangShizhao 9
  • [BUG] config.yaml自定义数据库账号密码报错(已反馈BUG一个月了)

    [BUG] config.yaml自定义数据库账号密码报错(已反馈BUG一个月了)

    Environment:

    Contos 8

    Physical Memory Capacity:

    8G

    Docker Image:

    最新镜像

    Code Version:

    最新版本

    Component installation:

    相关组件都有安装且正常

    Log File:

    goroutine 1 [running]: Open_IM/pkg/common/db.initMysqlDB() /Open-IM-Server/pkg/common/db/mysql.go:34 +0x156e Open_IM/pkg/common/db.init.0() /Open-IM-Server/pkg/common/db/model.go:43 +0x2e 0 Open failed Error 1045: Access denied for user 'root'@'xxxxxx' (using password: YES) root:[email protected](127.0.0.1:13306)/mysql?charset=utf8mb4&parseTime=true&loc=Local panic: Error 1045: Access denied for user 'root'@'172.21.0.1' (using password: YES)

    该问题在微信群反馈了N次,群管理还说新版本改好了,结果也没改!!!现在这问题都一个月了,每个礼拜都在群里艾特你们官方的人员问情况,结果都是回复一两句,人就消失了,对问题跟进这方面做的太差了,如果这样,要微信群何在?在群里反馈不跟,在github之前也反馈问题,也没跟?对此很失望。

    opened by minminshang 7
  • Connection refused issue on mac (using docker deployment)

    Connection refused issue on mac (using docker deployment)

    Following is the log :

    ==========================================================
    ==========================================================
    ==========================================================
    ==========server start time:2022-07-13 03:07:49===========
    ==========================================================
    ==========================================================
    ==========================================================
    /Open-IM-Server 
    open db ok  root:[email protected](127.0.0.1:13306)/openIM_v2?charset=utf8mb4&parseTime=true&loc=Local
    0 0 mongo driver client init success:  mongodb://127.0.0.1:37017/openIM/?maxPoolSize=100
    create index success
    start api server, address:  0.0.0.0:10002
    /Open-IM-Server 
    open db ok  root:[email protected](127.0.0.1:13306)/openIM_v2?charset=utf8mb4&parseTime=true&loc=Local
    0 0 mongo driver client init success:  mongodb://127.0.0.1:37017/openIM/?maxPoolSize=100
    create index success
    start cms api server, address:  0.0.0.0:10006
    /Open-IM-Server 
    open db ok  root:[email protected](127.0.0.1:13306)/openIM_v2?charset=utf8mb4&parseTime=true&loc=Local
    0 0 mongo driver client init success:  mongodb://127.0.0.1:37017/openIM/?maxPoolSize=100
    create index success
    start user rpc server, port:  10110
    /Open-IM-Server 
    open db ok  root:[email protected](127.0.0.1:13306)/openIM_v2?charset=utf8mb4&parseTime=true&loc=Local
    0 0 mongo driver client init success:  mongodb://127.0.0.1:37017/openIM/?maxPoolSize=100
    create index success
    start friend rpc server, port:  10120
    /Open-IM-Server 
    open db ok  root:[email protected](127.0.0.1:13306)/openIM_v2?charset=utf8mb4&parseTime=true&loc=Local
    0 0 mongo driver client init success:  mongodb://127.0.0.1:37017/openIM/?maxPoolSize=100
    create index success
    start group rpc server, port:  10150
    /Open-IM-Server 
    open db ok  root:[email protected](127.0.0.1:13306)/openIM_v2?charset=utf8mb4&parseTime=true&loc=Local
    0 0 mongo driver client init success:  mongodb://127.0.0.1:37017/openIM/?maxPoolSize=100
    create index success
    start auth rpc server, port:  10160
    /Open-IM-Server 
    open db ok  root:[email protected](127.0.0.1:13306)/openIM_v2?charset=utf8mb4&parseTime=true&loc=Local
    0 0 mongo driver client init success:  mongodb://127.0.0.1:37017/openIM/?maxPoolSize=100
    create index success
    start cms rpc server, port:  10200
    /Open-IM-Server 
    open db ok  root:[email protected](127.0.0.1:13306)/openIM_v2?charset=utf8mb4&parseTime=true&loc=Local
    0 0 mongo driver client init success:  mongodb://127.0.0.1:37017/openIM/?maxPoolSize=100
    create index success
    start msg cms rpc server, port:  10190
    /Open-IM-Server 
    open db ok  root:[email protected](127.0.0.1:13306)/openIM_v2?charset=utf8mb4&parseTime=true&loc=Local
    0 0 mongo driver client init success:  mongodb://127.0.0.1:37017/openIM/?maxPoolSize=100
    create index success
    start statistics rpc server, port:  10180
    /Open-IM-Server 
    open db ok  root:[email protected](127.0.0.1:13306)/openIM_v2?charset=utf8mb4&parseTime=true&loc=Local
    0 0 mongo driver client init success:  mongodb://127.0.0.1:37017/openIM/?maxPoolSize=100
    create index success
    start msg rpc server, port:  10130
    /Open-IM-Server 
    open db ok  root:[email protected](127.0.0.1:13306)/openIM_v2?charset=utf8mb4&parseTime=true&loc=Local
    0 0 mongo driver client init success:  mongodb://127.0.0.1:37017/openIM/?maxPoolSize=100
    create index success
    start office rpc server, port:  10210
    /Open-IM-Server 
    open db ok  root:[email protected](127.0.0.1:13306)/openIM_v2?charset=utf8mb4&parseTime=true&loc=Local
    0 0 mongo driver client init success:  mongodb://127.0.0.1:37017/openIM/?maxPoolSize=100
    create index success
    start organization rpc server, port:  10220
    /Open-IM-Server 
    open db ok  root:[email protected](127.0.0.1:13306)/openIM_v2?charset=utf8mb4&parseTime=true&loc=Local
    0 0 mongo driver client init success:  mongodb://127.0.0.1:37017/openIM/?maxPoolSize=100
    create index success
    start conversation rpc server, port:  10230
    /Open-IM-Server 
    open db ok  root:[email protected](127.0.0.1:13306)/openIM_v2?charset=utf8mb4&parseTime=true&loc=Local
    0 0 mongo driver client init success:  mongodb://127.0.0.1:37017/openIM/?maxPoolSize=100
    create index success
    start auth rpc server, port:  10240
    /Open-IM-Server 
    open db ok  root:[email protected](127.0.0.1:13306)/openIM_v2?charset=utf8mb4&parseTime=true&loc=Local
    0 0 mongo driver client init success:  mongodb://127.0.0.1:37017/openIM/?maxPoolSize=100
    create index success
    start rpc/msg_gateway server, port:  10140 10001
    /Open-IM-Server 
    open db ok  root:[email protected](127.0.0.1:13306)/openIM_v2?charset=utf8mb4&parseTime=true&loc=Local
    0 0 mongo driver client init success:  mongodb://127.0.0.1:37017/openIM/?maxPoolSize=100
    create index success
    start push rpc server, port:  10170
    init address is  [127.0.0.1:9092] topics is  [ms2ps_chat]
    /Open-IM-Server 
    /Open-IM-Server 
    /Open-IM-Server 
    /Open-IM-Server 
    open db ok  root:[email protected](127.0.0.1:13306)/openIM_v2?charset=utf8mb4&parseTime=true&loc=Local
    open db ok  root:[email protected](127.0.0.1:13306)/openIM_v2?charset=utf8mb4&parseTime=true&loc=Local
    open db ok  root:[email protected](127.0.0.1:13306)/openIM_v2?charset=utf8mb4&parseTime=true&loc=Local
    open db ok  root:[email protected](127.0.0.1:13306)/openIM_v2?charset=utf8mb4&parseTime=true&loc=Local
    0 0 mongo driver client init success:  mongodb://127.0.0.1:37017/openIM/?maxPoolSize=100
    create index success
    init address is  [127.0.0.1:9092] topics is  [ws2ms_chat]
    init address is  [127.0.0.1:9092] topics is  [ws2ms_chat]
    init address is  [127.0.0.1:9092] topics is  [msg_to_mongo]
    start msg_transfer server
    0 0 mongo driver client init success:  mongodb://127.0.0.1:37017/openIM/?maxPoolSize=100
    create index success
    init address is  [127.0.0.1:9092] topics is  [ws2ms_chat]
    init address is  [127.0.0.1:9092] topics is  [ws2ms_chat]
    0 0 mongo driver client init success:  mongodb://127.0.0.1:37017/openIM/?maxPoolSize=100
    init address is  [127.0.0.1:9092] topics is  [msg_to_mongo]
    create index success
    start msg_transfer server
    0 0 mongo driver client init success:  mongodb://127.0.0.1:37017/openIM/?maxPoolSize=100
    init address is  [127.0.0.1:9092] topics is  [ws2ms_chat]
    create index success
    init address is  [127.0.0.1:9092] topics is  [ws2ms_chat]
    init address is  [127.0.0.1:9092] topics is  [msg_to_mongo]
    init address is  [127.0.0.1:9092] topics is  [ws2ms_chat]
    init address is  [127.0.0.1:9092] topics is  [ws2ms_chat]
    start msg_transfer server
    init address is  [127.0.0.1:9092] topics is  [msg_to_mongo]
    ws server is starting
    start msg_transfer server
    /Open-IM-Server 
    open db ok  root:[email protected](127.0.0.1:13306)/openIM_v2?charset=utf8mb4&parseTime=true&loc=Local
    0 0 mongo driver client init success:  mongodb://127.0.0.1:37017/openIM/?maxPoolSize=100
    create index success
    start demo api server, port:  10004
    start demo api server address:  0.0.0.0:10004
    

    Also each container is successfully started, but when I try to access (localhost:10002 || 0.0.0.0:10002) getting connection refused in browser

    Docker version:20.10.14

    opened by strmchsr 6
  • 希望opemim增加类似rpc的即时回调通知第三方系统,完成特殊业务需求

    希望opemim增加类似rpc的即时回调通知第三方系统,完成特殊业务需求

    需求: 通过rpc或wss等协议任意监听openim里的数据接收和发送,并支持双向通信,既可以监听来自openim里的任意事件或接口,也能触发相关事件或接口。 理由 1.熟悉并修改openim风险更大 需要一定的精力熟悉,并承担未知的风险 2.二开后将可能会无法随时更新openim,并伴随未知风险 3.由于openim很稳定,我们借助openim的稳定性,将特殊需求在我们其他系统框架中去实现,这样就可以降低以上说明的风险和避免部分问题,灵活性将大大提高 参考 可能我说的不是很清楚 但是有一个项目是 某Q协议项目 他们的实现应该是比较理想的效果,也能更好的完整表达我的想法 这是一个https://github.com/Mrs4s/go-cqhttp 服务框架 可以二开也可以开启wss github.com/wdvxdr1123/ZeroBot 这个就是基于上述的服务框架通过socket实现的二开,一种解耦的方式实现特殊的需求,希望项目组能考虑一下这种方式

    opened by 54huige 6
  • MsgToUser 是否存在内网流量放大

    MsgToUser 是否存在内网流量放大

    每条用户消息, push 服到 gate 服,都是 push 服发送所有 gate 服,是否性能有问题,存在内网流量放大的情况

    func MsgToUser(pushMsg *pbPush.PushMsgReq) {
    	var wsResult []*pbRelay.SingleMsgToUser
    	isOfflinePush := utils.GetSwitchFromOptions(pushMsg.MsgData.Options, constant.IsOfflinePush)
    	log.Debug("Get msg from msg_transfer And push msg", pushMsg.OperationID, "PushData", pushMsg.String())
    	grpcCons := getcdv3.GetConn4Unique(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOnlineMessageRelayName)
    	//Online push message
    	log.Debug("test", pushMsg.OperationID, "len  grpc", len(grpcCons), "data", pushMsg.String())
    	for _, v := range grpcCons {
    		msgClient := pbRelay.NewOnlineMessageRelayServiceClient(v)
    		reply, err := msgClient.OnlinePushMsg(context.Background(), &pbRelay.OnlinePushMsgReq{OperationID: pushMsg.OperationID, MsgData: pushMsg.MsgData, PushToUserID: pushMsg.PushToUserID})
    		if err != nil {
    			log.InfoByKv("push data to client rpc err", pushMsg.OperationID, "err", err)
    			continue
    		}
    		if reply != nil && reply.Resp != nil {
    			wsResult = append(wsResult, reply.Resp...)
    		}
    	}
    	...
    }
    
    opened by fananchong 4
  • Nginx wss 反代问题

    Nginx wss 反代问题

    Nginx配置:

    server {
            listen 3000 ssl http2 default_server;
            listen [::]:3000 ssl http2 default_server;
            server_name _;
    
            ssl_certificate /opt/case/1.pem;
            ssl_certificate_key /opt/case/1.key;
    
            location / {
                    proxy_pass http://127.0.0.1:30000;
                    proxy_set_header Host $host;
                    proxy_http_version 1.1;
                    proxy_set_header Upgrade $http_upgrade;
                    proxy_set_header Connection "upgrade";
                    proxy_buffering off;
            }
        }
    

    Nginx报错信息如下:

    [error] 11603#11603: *1 connect() failed (111: Connection refused) while connecting to upstream, client: *****, server: _, request: "GET /?sendID=xx&token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJVSUQiOiJxaWFveWl5YW5nIiwiUGxhdGZvcm0iOiJXZWIiLCJleHAiOjE2NDM4MDU5MzcsIm5iZiI6MTY0MzIwMTEzNywiaWF0IjoxNjQzMjAxMTM3fQ.T-3wo-Xg-uro3ApN2whnZ2J5mwpS9aCNfEZwDyskByU&platformID=5 HTTP/1.1", upstream: "http://127.0.0.1:30000/?sendID=xx&token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJVSUQiOiJxaWFveWl5YW5nIiwiUGxhdGZvcm0iOiJXZWIiLCJleHAiOjE2NDM4MDU5MzcsIm5iZiI6MTY0MzIwMTEzNywiaWF0IjoxNjQzMjAxMTM3fQ.T-3wo-Xg-uro3ApN2whnZ2J5mwpS9aCNfEZwDyskByU&platformID=5", host: "_:3000"
    

    Websocket报错信息如下:

    <html>
    <body>
    <!--StartFragment-->
    
    Error during WebSocket handshake: Unexpected response code: 502
    --
    
    
    <br class="Apple-interchange-newline"><!--EndFragment-->
    </body>
    </html>
    
    opened by JamesJoe-C 4
  • Ubuntu16.04 docker 安装启动失败

    Ubuntu16.04 docker 安装启动失败

    etcd is up-to-date zookeeper is up-to-date redis is up-to-date mongo is up-to-date mysql is up-to-date kafka is up-to-date Starting open_im_server ... error

    ERROR: for open_im_server Cannot start service open_im_server: OCI runtime create failed: container_linux.go:349: starting container process caused "exec: "./docker_start_all.sh": permission denied": unknown

    ERROR: for open_im_server Cannot start service open_im_server: OCI runtime create failed: container_linux.go:349: starting container process caused "exec: "./docker_start_all.sh": permission denied": unknown ERROR: Encountered errors while bringing up the project.

    opened by liumingsongning 4
  • [BUG] 启动时报错,默认配置不对?

    [BUG] 启动时报错,默认配置不对?

    =========================================================

    ==========server start time:2022-11-07 05:33:08===========

    ==========================================================

    ========================================================== GET IM DEFAULT CONFIG PATH : /Open-IM-Server ENV PATH: panic: yaml: unmarshal errors: line 31: cannot unmarshal !!seq into string

    goroutine 1 [running]: Open_IM/pkg/common/config.init.0() /Open-IM-Server/pkg/common/config/config.go:568 +0x365 GET IM DEFAULT CONFIG PATH : /Open-IM-Server ENV PATH: panic: yaml: unmarshal errors: line 31: cannot unmarshal !!seq into string

    goroutine 1 [running]: Open_IM/pkg/common/config.init.0() /Open-IM-Server/pkg/common/config/config.go:568 +0x365 GET IM DEFAULT CONFIG PATH : /Open-IM-Server ENV PATH: panic: yaml: unmarshal errors: line 31: cannot unmarshal !!seq into string

    goroutine 1 [running]: Open_IM/pkg/common/config.init.0() /Open-IM-Server/pkg/common/config/config.go:568 +0x365 GET IM DEFAULT CONFIG PATH : /Open-IM-Server ENV PATH: panic: yaml: unmarshal errors: line 31: cannot unmarshal !!seq into string

    goroutine 1 [running]: Open_IM/pkg/common/config.init.0() /Open-IM-Server/pkg/common/config/config.go:568 +0x365 GET IM DEFAULT CONFIG PATH : /Open-IM-Server ENV PATH: panic: yaml: unmarshal errors: line 31: cannot unmarshal !!seq into string

    goroutine 1 [running]: Open_IM/pkg/common/config.init.0() /Open-IM-Server/pkg/common/config/config.go:568 +0x365 GET IM DEFAULT CONFIG PATH : /Open-IM-Server ENV PATH: panic: yaml: unmarshal errors: line 31: cannot unmarshal !!seq into string

    goroutine 1 [running]: Open_IM/pkg/common/config.init.0() /Open-IM-Server/pkg/common/config/config.go:568 +0x365 GET IM DEFAULT CONFIG PATH : /Open-IM-Server ENV PATH: panic: yaml: unmarshal errors: line 31: cannot unmarshal !!seq into string

    goroutine 1 [running]: Open_IM/pkg/common/config.init.0() /Open-IM-Server/pkg/common/config/config.go:568 +0x365 GET IM DEFAULT CONFIG PATH : /Open-IM-Server ENV PATH: panic: yaml: unmarshal errors: line 31: cannot unmarshal !!seq into string

    goroutine 1 [running]: Open_IM/pkg/common/config.init.0() /Open-IM-Server/pkg/common/config/config.go:568 +0x365 GET IM DEFAULT CONFIG PATH : /Open-IM-Server ENV PATH: panic: yaml: unmarshal errors: line 31: cannot unmarshal !!seq into string

    goroutine 1 [running]: Open_IM/pkg/common/config.init.0() /Open-IM-Server/pkg/common/config/config.go:568 +0x365 GET IM DEFAULT CONFIG PATH : /Open-IM-Server ENV PATH: panic: yaml: unmarshal errors: line 31: cannot unmarshal !!seq into string

    goroutine 1 [running]: Open_IM/pkg/common/config.init.0() /Open-IM-Server/pkg/common/config/config.go:568 +0x365 GET IM DEFAULT CONFIG PATH : /Open-IM-Server ENV PATH: panic: yaml: unmarshal errors: line 31: cannot unmarshal !!seq into string

    goroutine 1 [running]: Open_IM/pkg/common/config.init.0() /Open-IM-Server/pkg/common/config/config.go:568 +0x365 GET IM DEFAULT CONFIG PATH : /Open-IM-Server ENV PATH: panic: yaml: unmarshal errors: line 31: cannot unmarshal !!seq into string

    goroutine 1 [running]: Open_IM/pkg/common/config.init.0() /Open-IM-Server/pkg/common/config/config.go:568 +0x365 GET IM DEFAULT CONFIG PATH : /Open-IM-Server ENV PATH: panic: yaml: unmarshal errors: line 31: cannot unmarshal !!seq into string

    goroutine 1 [running]: Open_IM/pkg/common/config.init.0() /Open-IM-Server/pkg/common/config/config.go:568 +0x365 GET IM DEFAULT CONFIG PATH : /Open-IM-Server ENV PATH: panic: yaml: unmarshal errors: line 31: cannot unmarshal !!seq into string

    goroutine 1 [running]: Open_IM/pkg/common/config.init.0() /Open-IM-Server/pkg/common/config/config.go:568 +0x365 GET IM DEFAULT CONFIG PATH : /Open-IM-Server ENV PATH: GET IM DEFAULT CONFIG PATH : /Open-IM-Server ENV PATH: GET IM DEFAULT CONFIG PATH : /Open-IM-Server ENV PATH: GET IM DEFAULT CONFIG PATH : /Open-IM-Server ENV PATH: panic: yaml: unmarshal errors: line 31: cannot unmarshal !!seq into string

    goroutine 1 [running]: Open_IM/pkg/common/config.init.0() /Open-IM-Server/pkg/common/config/config.go:568 +0x365 panic: yaml: unmarshal errors: line 31: cannot unmarshal !!seq into string

    goroutine 1 [running]: Open_IM/pkg/common/config.init.0() /Open-IM-Server/pkg/common/config/config.go:568 +0x365 panic: yaml: unmarshal errors: line 31: cannot unmarshal !!seq into string

    goroutine 1 [running]: Open_IM/pkg/common/config.init.0() /Open-IM-Server/pkg/common/config/config.go:568 +0x365 panic: yaml: unmarshal errors: line 31: cannot unmarshal !!seq into string

    goroutine 1 [running]: Open_IM/pkg/common/config.init.0() /Open-IM-Server/pkg/common/config/config.go:568 +0x365 sdk server init args is : apiAddress: http://127.0.0.1:10002 wsAddress: ws://127.0.0.1:10001 10003 6 2022-11-07 05:33:31.392 [INFO] [PID:482] [FilePath:ws_init_login.go:180] [OperationID:] [InitServer {"platform":5,"api_addr":"http://127.0.0.1:10002","ws_addr":"ws://127.0.0.1:10001","data_dir":"../db/sdk/","log_level":0,"object_storage":"","encryption_key":""}] ws server is starting GET IM DEFAULT CONFIG PATH : /Open-IM-Server ENV PATH: panic: yaml: unmarshal errors: line 31: cannot unmarshal !!seq into string

    goroutine 1 [running]: Open_IM/pkg/common/config.init.0() /Open-IM-Server/pkg/common/config/config.go:568 +0x365

    Environment:

    Physical Memory Capacity:

    Docker Image:

    Code Version:

    Component installation:

    Log File:

    screenshot:

    opened by xiaodi2013 3
  • [BUG] k8s部署后,登陆失败

    [BUG] k8s部署后,登陆失败

    k8s部署后,使用Open-IM-PC-Web-Demo测试链接,在注册完成后,无法登陆,提示 {"errCode":10005,"errMsg":"Post "http://:10002/auth/user_token": dial tcp :10002: connect: connection refused"} config.yaml版本: 2.3.1

    opened by imabaymax 3
  • 我用macos编译出错了,error: implicit declaration of function 'setresgid' is invalid in C99

    我用macos编译出错了,error: implicit declaration of function 'setresgid' is invalid in C99

    环境 macos 10.15.7, idea 2021.3

    build sdk报错了,大佬帮忙看看吧: Current directory: /Users/lixiaozhong/dev/gopath/src/Open-IM-Server/cmd/Open-IM-SDK-Core make build CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build -o ws_wrapper/cmd/open_im_sdk_server ws_wrapper/cmd/open_im_sdk_server.go

    linux_syscall.c:67:13: error: implicit declaration of function 'setresgid' is invalid in C99 [-Werror,-Wimplicit-function-declaration] linux_syscall.c:67:13: note: did you mean 'setregid'? /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include/unistd.h:593:6: note: 'setregid' declared here linux_syscall.c:73:13: error: implicit declaration of function 'setresuid' is invalid in C99 [-Werror,-Wimplicit-function-declaration] linux_syscall.c:73:13: note: did you mean 'setreuid'? /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include/unistd.h:595:6: note: 'setreuid' declared here make[1]: *** [build] Error 2 make: *** [install] Error 2

    opened by lixiaozhong 3
  • [BUG] kafka.NewMConsumerGroup 在kafka集群配置了SASL时,没有设置SASL配置的代码,导致kafka连接失败

    [BUG] kafka.NewMConsumerGroup 在kafka集群配置了SASL时,没有设置SASL配置的代码,导致kafka连接失败

    func NewMConsumerGroup(consumerConfig *MConsumerGroupConfig, topics, addrs []string, groupID string) *MConsumerGroup { config := sarama.NewConfig() config.Version = consumerConfig.KafkaVersion config.Consumer.Offsets.Initial = consumerConfig.OffsetsInitial config.Consumer.Return.Errors = consumerConfig.IsReturnErr fmt.Println("init address is ", addrs, "topics is ", topics)

          //这里应该要向consumer.go一样,要加入SASL的配置代码
    
    
      consumerGroup, err := sarama.NewConsumerGroup(addrs, groupID, config)
      if err != nil {
    	  panic(err.Error())
      }
      return &MConsumerGroup{
    	  consumerGroup,
    	  groupID,
    	  topics,
      }
    

    }

    opened by sdzhu 0
  • Messgae ContentType 119 ,120 does not work

    Messgae ContentType 119 ,120 does not work

    version v2.3.3

    chat_logs table :

    image

     data = {
                "contentType": contentType,
                "groupID": str(group_id),
                "operationID": generate_operation_id(),
                "sendID": OPENIM_API_ADMIN_UID,
                "senderPlatformID": 7,
                "sessionType": 2,
                "content": {
                    'data':body
                }
            }
    

    Just contentType different

    opened by zengzhengrong 0
  • [建议/想法]希望能开一个子项目.

    [建议/想法]希望能开一个子项目.

    这个项目很好,特别是针对社交类,通讯类.基本上这也算是现在大部分app的"标配"功能了. 只是针对一些工具类,或小项目时,还是有点"体积过大". 我是一个独立开发者,会开发一些工具类或非社交类的app.但这些app也会有"实时通知"功能.不是ios那种远程push,就是在线用户的实时通讯. 比如: 我开发一个app,刚上线时是不会加IM这种通讯的,但会有一些"实时通知"的需要,像实时封禁,某一延时(异步)的实时提示,或实时下发一些配置等等.这些不需要用户与用户之间通讯,更多的是服务端对现在"正在线"的用户发送一些"自定议消息". 其实需要的功能很简单,用打开或注册后能加入至少一个"群(订阅)",当有需要时,服务器端可以对某一个用户或某一个"群(订单)"发送一个自定义消息就行了.在线的收到,不在线的不用发送,app端或服务端都不用保存数据,只是在线发送出去就行了.

    这个需求在app开发上比IM使用要更广泛.现在也没有类似像样的开源产品,大部分好像都是自己用websocket实现.但对小团队或独立开发来说,websocket的开发或优化也是大麻烦.

    这样的产品,不管是任何类型的app或web都有需求,如果以后还能再平滑迁移到openim更好,不能平滑迁移也无所谓.但如果只为了这个"实时通知"直接把openim加到项目里,又会特别"臃肿",维护成本也高不少.所以标题才说如果能有一个基于openim的子项目去实现更好一些.

    以上只是我个人开发app过程中遇到的需求,算是给官方提供一种思路吧.

    opened by smallevil 2
Releases(v2.3.3)
  • v2.3.3(Sep 19, 2022)

    1. mongdb/etcd/kafka/redis Support cluster and password authentication. Please refer to the configuration file for details

    2. mysql Support password authentication.

    3. Report key operation statistics (such as number of online users, messages per minute, etc.) to Prometheus

    4. Display the current version number

    5. Remove the message for multiple verifications

    6. Fix bug: conversation not update;

    7. Fix bug: failed to invite users to join the group ;

    8. Fix bug: failed to kick out user;

    9. Fix bug: hash is not updated when group is dismissed;

    10. Fix bug: KickUserOffline panic: runtime error: invalid memory address or nil pointer dereference

    Source code(tar.gz)
    Source code(zip)
  • v2.3.2(Sep 9, 2022)

    1. Limit the number of group members, including creating groups, inviting people to join groups, and kicking people from groups
    2. add grpc client cache to reduce etcd pressure
    3. Add group member local cache inside the module
    4. Outdated messages are no longer pushed
    5. Default configuration in case of etcd exception
    6. Add hash value for group member list to reduce calls to pull group members
    7. Add api for Pull group member list by page
    Source code(tar.gz)
    Source code(zip)
  • v2.3.0-rc2(Jul 29, 2022)

  • v2.3.0-rc1(Jul 25, 2022)

    (1) The server adds a consistent cache (dtm: https://www.dtm.pub/) to optimize the db read and write performance; (2) For the group reading diffusion group, the latest 100 messages are synchronized first when logging in, and the historical messages are loaded on demand; (3) When applying to join the group, the group owner or administrator can see the way to join the group and who invited to join the group; (4) Disband the group and can no longer send messages; (5) Friends' notes can be deleted, and the original name will be restored after deletion; (6) The group owner and administrator can see the group members’ joining method: scan the code to enter the group, whoever invites to join the group, search for the group entry; (7) The group owner and administrator set group member permissions: whether to allow viewing of other group members’ information; whether to allow adding group members friends;

    Source code(tar.gz)
    Source code(zip)
  • v2.3.0-rc0(Jul 15, 2022)

    1. Group chat supports read diffusion, features: new members of the group can see historical messages; group chat message server only saves one copy
    2. Group announcements showing editor information and release time
    3. Show the way members of the group enter the group (search into the group, QR code into the group, invite into the group)
    4. Group permission control is added, group members are (not) allowed to add friends, and group members are (not) allowed to view information;
    5. When the personal nickname is modified, the group nickname is updated in real time
    6. Friend remark can be deleted and synchronized with multiple terminals
    Source code(tar.gz)
    Source code(zip)
  • v2.2.0(Jul 2, 2022)

    After the 2.2.0 version, the new version management will be used,there is no new features will be added for this big version recently, only bugs will be fixed(2.2.x), please feel free to update to version 2.2.0

    1. Add server API documentation and deployment documentation.
    2. Add group access verification
    3. docker-compose integrates minio
    4. Add Tencent Cloud SMS function
    Source code(tar.gz)
    Source code(zip)
  • v2.1.0(Jun 21, 2022)

    1. Add a caching mechanism to spread messages and improve message processing speed
    2. Replace redis with go_redis library support mode
    3. kafka is modified to be accessible from the external network
    4. Added the function of setting administrator to the group
    5. Fix the sarama package to send messages to kafka synchronously
    6. Offline push of audio and video calls
    Source code(tar.gz)
    Source code(zip)
  • v2.0.10(May 13, 2022)

    1. The management terminal sends video message
    2. Group of write spread , the number of people is more than 500, and the message push will give priority to online users
    3. Personal icon modification, group member icon synchronization
    4. Version upgrade of etcd and sarama
    Source code(tar.gz)
    Source code(zip)
  • v2.0.9(Apr 29, 2022)

  • v2.0.8(Apr 29, 2022)

  • v2.0.7(Apr 8, 2022)

    1. Log level adjustment
    2. Add tag to send message function
    3. Shell script update
    4. Added server delete chat history interface
    5. Add system notification api
    Source code(tar.gz)
    Source code(zip)
  • v2.0.6(Apr 1, 2022)

    1. Added the function of disbanding the group
    2. Added group chat mute function
    3. The messages in the group have been read and added
    4. Add to burn after reading
    Source code(tar.gz)
    Source code(zip)
  • v2.0.5(Mar 25, 2022)

  • v2.04(Mar 20, 2022)

    1. Add signaling server for real time communication
    2. Fix bug: etcd keepalive failed
    3. Verify blacklist when sending message
    4. Verify friendship when sending messages
    5. Set conversation muted
    Source code(tar.gz)
    Source code(zip)
  • v2.0.3(Mar 14, 2022)

  • v2.0.2(Mar 4, 2022)

  • v2.0.1(Feb 25, 2022)

  • v2.0.0(Feb 23, 2022)

    1. Object storage supports Minio
    2. Improve the event notification mechanism
    3. Redesign the DB field and have the ability of expansion
    4. Optimize code structure
    5. Add password reset function
    Source code(tar.gz)
    Source code(zip)
  • v1.0.7(Dec 17, 2021)

  • v1.0.6(Dec 10, 2021)

    1. Add do not disturb interface: set not to be reminded when receiving messages or set not to receive messages
    2. Add iOS offline push
    3. Sender sync message on multiple terminal
    Source code(tar.gz)
    Source code(zip)
  • v1.0.5(Dec 3, 2021)

    1. Split the log files to avoid too many files
    2. Add user online status query interface
    3. Fix bug: User quiting group failed
    4. The register service is integrated into the open-im-server to simplify the deployment demo
    Source code(tar.gz)
    Source code(zip)
  • v1.0.4(Nov 25, 2021)

    1. Fix the bug of deleting users, importing friends and reporting errors, but successful
    2. The managment message interface adds the message sent only online, and the message sending callback parameter optimization
    3. Add the kick each other of login, currently supports all platforms online, but the same terminal will kick
    4. Token is stored in redis to improve security
    Source code(tar.gz)
    Source code(zip)
  • v1.0.3(Nov 12, 2021)

    1. Demo adds SMS verification code service
    2. The code directory is adjusted to the go official recommended structure
    3. For timer delete, the server adds a new feature of minimum seq
    4. Scan code offline data regularly, and the minimum seq of mongodb is synchronized to redis to improve the fault tolerance of the server
    Source code(tar.gz)
    Source code(zip)
  • v1.0.1(Nov 5, 2021)

    1. fix bug about import friends
    2. add offline Jpush
    3. user register and get user token add secret auth
    4. management interface add simulate user send message
    Source code(tar.gz)
    Source code(zip)
  • v1.0.0(Oct 28, 2021)

    1. Add client sdk and server heartbeat strategy
    2. Add message synchronization and alignment
    3. Send message by protobuf + websocket
    4. Add synchronization message to cache
    5. Optimization of pull message strategy
    6. The message reliability test is added to ensure that the message rate can reach 100% under various conditions
    Source code(tar.gz)
    Source code(zip)
Owner
OpenIM Corporation
OpenIM Corporation
BlueBot is an open-source trading bot that can be customized to handle specific investment strategies.

BlueBot Quick Note BlueBot and all mentioned services are free to use, including supported financial APIs. Overview BlueBot is a self-healing trading

Coby Eastwood 18 Sep 7, 2022
HoloBot — An open-source Discord bot for Hololive fans, built with Go.

HoloBot HoloBot — An open-source Discord bot for Hololive fans, built with Go. Installation From Binary Download holobot binary here. Create a file ca

TacticalCatto 5 Dec 17, 2021
Feishu/Lark Open API Go Sdk, Support ALL Open API and Event Callback.

lark 中文版 README Feishu/Lark Open API Go Sdk, Support ALL Open API and Event Callback. Created By Code Generation. Install go get github.com/chyroc/lar

chyroc 260 Nov 20, 2022
Original Apollo 11 Guidance Computer (AGC) source code for the command and lunar modules.

Apollo-11 ?? Bahasa Indonesia, Català, Čeština, Deutsch, English, Español, Français, Italiano, Kurdi, Nederlands, Norsk, Polski, Português, Română, Ti

Chris Garry 53.9k Nov 22, 2022
IRC bot for launch ddos attack, Mainly of scan target are IoT device that run linux and open default SSH port

This is my first IRC bot for launch ddos attack, Mainly of scan target are IoT device that run linux and open default SSH port, This bot is write on Go language. For education purpose only. Please test it in your lab. And i create this for join university in the future not for attack anyone server with out any permission!!!

Bozer 12 Nov 18, 2022
The real 0xSniper. Open your nitro sniping service easy just need to patch the code.

# ss-sniper Hi my homies, Here was the ss-sniper, the "best" nitro sniper. Average delay -> 100~120ms. The sniper include invite checker (minimal o

&! Ѵιchy.#0110 10 Nov 1, 2022
A modern IRC server (daemon/ircd) written in Go.

Oragono is a modern IRC server written in Go. Its core design principles are: Being simple to set up and use Combining the features of an ircd, a serv

Oragono 1.9k Nov 22, 2022
WIP Telegram Bot API server in Go

botapi The telegram-bot-api, but in go. WIP. Reference: https://core.telegram.org/bots/api Reference implementation: https://github.com/tdlib/telegram

gotd 17 Nov 25, 2022
Fastest light-weight Discord server joiner written in GO

DiscordInviterGO! Fastest light-weight Discord server joiner written in GO Disclaimer For Educational purposes only. Use at your own risk. Automation

Vanshaj 98 Oct 27, 2022
A simple Discord bot developed for the Bedrock Gophers discord server.

Bedrock Gopher A simple Discord bot developed for the Bedrock Gophers discord server. Click here to invite the bot to your guild. You will also need t

Dragonfly 3 Mar 12, 2022
This utility allows you to execute Minecraft server commands through the RCON protocol via Telegram chat.

Minecraft RCON by Telegram This utility allows you to execute Minecraft server commands through the RCON protocol via Telegram chat. FAQ When you run

Alexander Pers0na2 4 Jul 24, 2022
CoachCarter: a discord bot which lets a server know if its inactive for too long

I took this job because I wanted to affect change in a special group of young me

Waqas Ali 1 Jan 7, 2022
RaunchBot brings you the latest Raunchy content straight to your favorite Discord server.

RaunchBot RaunchBot brings you the latest Raunchy content straight to your favorite Discord server. Development: Compile and run the project. TOKEN=ab

null 1 Jan 22, 2022
RaunchBot brings you the latest Raunchy content straight to your favorite Discord server.

RedditBot RedditBot brings you the latest Raunchy content straight to your favorite Discord server. Get RedditBot in your discord here. Bot Commands:

null 1 Jan 22, 2022
Bot to automatically approve Bitbucket Server PRs

renovate-approve-bot-bitbucket-server Introduction This is a small application, similar to renovatebot/renovate-approve-bot-bitbucket-cloud to automat

Swisscom 2 Nov 2, 2022
This is a program that auctions minecraft names, its self hostable and can be used via your server.

Auction-Bot This is a discord bot made in go, its a wip and will be updated over time. This bot atm can create channels in your discord for users to p

null 1 Feb 13, 2022
Open-IM-Server is open source instant messaging Server.Backend in Go.

Open-IM-Server is open source instant messaging Server.Backend in Go.

OpenIM Corporation 9.8k Nov 18, 2022
Instant messaging server for the Extensible Messaging and Presence Protocol (XMPP).

Instant messaging server for the Extensible Messaging and Presence Protocol (XMPP).

Miguel Ángel Ortuño 1.4k Nov 25, 2022
Instant messaging platform. Backend in Go. Clients: Swift iOS, Java Android, JS webapp, scriptable command line; chatbots

Tinode Instant Messaging Server Instant messaging server. Backend in pure Go (license GPL 3.0), client-side binding in Java, Javascript, and Swift, as

Tinode 9.5k Nov 23, 2022
Instant messaging platform. Backend in Go and Client in Flutter

Seemer Messaging Server Instant messaging server. Backend in pure Go (license GPL 3.0), client-side binding in Flutter as well as gRPC client support

Mohammad Javad Hossieni 2 Dec 20, 2021