Giter Site home page Giter Site logo

openimsdk / open-im-server Goto Github PK

View Code? Open in Web Editor NEW
13.0K 13.0K 2.3K 32.54 MB

IM Chat

Home Page: https://openim.io

License: Apache License 2.0

Shell 2.89% Go 93.67% Dockerfile 1.70% Smarty 1.69% Batchfile 0.05%
chat go golang im imserver instant-messaging messaging messenger openim telegram wechat

open-im-server's Introduction

👥 Join Our Community

Ⓜ️ About OpenIM

Unlike standalone chat applications such as Telegram, Signal, and Rocket.Chat, OpenIM offers an open-source instant messaging solution designed specifically for developers rather than as a directly installable standalone chat app. Comprising OpenIM SDK and OpenIM Server, it provides developers with a complete set of tools and services to integrate instant messaging functions into their applications, including message sending and receiving, user management, and group management. Overall, OpenIM aims to provide developers with the necessary tools and framework to implement efficient instant messaging solutions in their applications.

App-OpenIM Relationship

🚀 Introduction to OpenIMSDK

OpenIMSDK, designed for OpenIMServer, is an IM SDK created specifically for integration into client applications. It supports various functionalities and modules:

  • 🌟 Main Features:

    • 📦 Local Storage
    • 🔔 Listener Callbacks
    • 🛡️ API Wrapping
    • 🌐 Connection Management
  • 📚 Main Modules:

    1. 🚀 Initialization and Login
    2. 👤 User Management
    3. 👫 Friends Management
    4. 🤖 Group Functions
    5. 💬 Session Handling

Built with Golang and supports cross-platform deployment to ensure a consistent integration experience across all platforms.

👉 Explore the GO SDK

🌐 Introduction to OpenIMServer

  • OpenIMServer features include:
    • 🌐 Microservices Architecture: Supports cluster mode, including a gateway and multiple rpc services.
    • 🚀 Diverse Deployment Options: Supports source code, Kubernetes, or Docker deployment.
    • Massive User Support: Supports large-scale groups with hundreds of thousands, millions of users, and billions of messages.

Enhanced Business Functions:

  • REST API: Provides a REST API for business systems to enhance functionality, such as group creation and message pushing through backend interfaces.

  • Webhooks: Expands business forms through callbacks, sending requests to business servers before or after certain events.

    Overall Architecture

🚀 Quick Start

Experience online for iOS/Android/H5/PC/Web:

👉 OpenIM Online Demo

To facilitate user experience, we offer various deployment solutions. You can choose your preferred deployment method from the list below:

System Support

Supports Linux, Windows, Mac systems, and ARM and AMD CPU architectures.

🔗 Links

✍️ How to Contribute

We welcome contributions of any kind! Please make sure to read our Contributor Documentation before submitting a Pull Request.

Thank you for contributing to building a powerful instant messaging solution!

📕 License

OpenIMSDK is available under the Apache License 2.0. See the LICENSE file for more information.

🔮 Thanks to our contributors!

open-im-server's People

Contributors

a3d21 avatar andrewzuo01 avatar bantanger avatar cncsmonster avatar cubxxw avatar dependabot[bot] avatar ethanforai avatar fgadvancer avatar hanson-wen avatar hanzhixiao avatar healingtjx avatar kubbot avatar kvii avatar ling6614 avatar liu-xuewen avatar longyuqing112 avatar luhaoling avatar ouyangdage avatar plutoyty avatar rfyiamcool avatar skiffer-git avatar soasurs avatar sweep-ai[bot] avatar wangchuxiao-dev avatar withchao avatar wxuanf avatar xiiaodan avatar xuexihuang avatar yiippee avatar zm50 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

open-im-server's Issues

Branch main build failed

Step

git clone https://github.com/OpenIMSDK/Open-IM-Server.git --recursive
#cd Open-IM-server/script
chmod +x *.sh
./build_all_service.sh

Error:

# Open_IM/src/common/config
..\common\config\config.go:8:2: imported and not used: "path/filepath"
..\common\config\config.go:9:2: imported and not used: "runtime"

So I tried the release v1.0.1. Then I got :

Current directory: /c/work/go/src/Open-IM-Server/src/Open-IM-SDK-Core
make: *** No rule to make target 'install'.  Stop.

发送消息后报告异常。

异常如下

另:发送消息需要先创建Conversation嘛

2021/11/11 15:52:39 [ ws_init_login.go : 158 ] [Conn is nil data {OnRecvNewMessage 0  {"clientMsgID":"bce95e482242b992c665fb48c2644dbf","serverMsgID":"2021-11-11 15:52:39-d5645454517-4037200794235010051","createTime":0,"sendTime":1636617159437581458,"sessionType":1,"sendID":"d5645454517","recvID":"d5645454518","msgFrom":100,"contentType":101,"platformID":5,"forceList":null,"senderNickName":"张三","senderFaceUrl":"https:oss.com.cn/head","groupID":"","content":"cdddddd","seq":20,"isRead":false,"status":2,"remark":"","pictureElem":{"sourcePath":"","sourcePicture":{"uuid":"","type":"","size":0,"width":0,"height":0,"url":""},"bigPicture":{"uuid":"","type":"","size":0,"width":0,"height":0,"url":""},"snapshotPicture":{"uuid":"","type":"","size":0,"width":0,"height":0,"url":""}},"soundElem":{"uuid":"","soundPath":"","sourceUrl":"","dataSize":0,"duration":0},"videoElem":{"videoPath":"","videoUUID":"","videoUrl":"","videoType":"","videoSize":0,"duration":0,"snapshotPath":"","snapshotUUID":"","snapshotSize":0,"snapshotUrl":"","snapshotWidth":0,"snapshotHeight":0},"fileElem":{"filePath":"","uuid":"","sourceUrl":"","fileName":"","fileSize":0},"mergeElem":{"title":"","abstractList":null,"multiMessage":null},"atElem":{"text":"","atUserList":null,"isAtSelf":false},"locationElem":{"description":"","longitude":0,"latitude":0},"customElem":{"data":"","description":"","extension":""},"quoteElem":{"text":"","quoteMessage":null}} 0} d5645454518]
[GIN] 2021/11/11 - 15:52:39 | 200 |    3.625433ms |     172.16.3.96 | POST     "/group/get_group_applicationList"
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x500747]

goroutine 131 [running]:
database/sql.(*Rows).Next(0x0)
        /usr/local/go/src/database/sql/sql.go:2944 +0x27
open_im_sdk/open_im_sdk.(*UserRelated).getAllConversationListModel(0xfb78e0)
        /Open-IM-Server/src/Open-IM-SDK-Core/open_im_sdk/data_model.go:375 +0x105
open_im_sdk/open_im_sdk.(*UserRelated).doUpdateConversation(0xc0003ecb00, {{0x0, 0x9}, {0xa8e180, 0xc00046b970}})
        /Open-IM-Server/src/Open-IM-SDK-Core/open_im_sdk/conversation_msg.go:357 +0x62f
open_im_sdk/open_im_sdk.(*UserRelated).doMsgNew(0xc0003ecb00, {{0xaeac2b, 0x2}, {0xa7ad60, 0xc0001ab1d0}})
        /Open-IM-Server/src/Open-IM-SDK-Core/open_im_sdk/conversation_msg.go:205 +0x3ad
open_im_sdk/open_im_sdk.(*UserRelated).work(0xc0003ca2f0, {{0xaeac2b, 0x1}, {0xa7ad60, 0xc0001ab1d0}})

希望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实现的二开,一种解耦的方式实现特殊的需求,希望项目组能考虑一下这种方式

聊天消息的cos上传

这个cos图片路径默认用的是bucket name访问的,实际生产环境大家可能用的cdn地址,最好配置文件加个选项,可以用用cdn图片地址访问的

Websocket 服务崩溃

使用WebAPI连接WebSocket,会经常出现以下错误,然后导致WebSocket服务无法连接,需要重启才可以。

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x500747]

goroutine 422 [running]:
database/sql.(*Rows).Next(0x0)
/usr/local/go/src/database/sql/sql.go:2944 +0x27
open_im_sdk/open_im_sdk.(*UserRelated).getAllConversationListModel(0xfb58e0)
/Open-IM-Server/cmd/Open-IM-SDK-Core/open_im_sdk/data_model.go:404 +0x105
open_im_sdk/open_im_sdk.(*UserRelated).doUpdateConversation(0xc00037ba20, {{0x0, 0x35}, {0xa8d2c0, 0xc0001cb9d0}})
/Open-IM-Server/cmd/Open-IM-SDK-Core/open_im_sdk/conversation_msg.go:403 +0x62f
open_im_sdk/open_im_sdk.(*UserRelated).doMsgNew(0xc00037ba20, {{0x2, 0x2}, {0x41, 0xc913dd}})
/Open-IM-Server/cmd/Open-IM-SDK-Core/open_im_sdk/conversation_msg.go:250 +0x22ed
open_im_sdk/open_im_sdk.(*UserRelated).work(0xc0003796f0, {{0xae9e7b, 0x1}, {0xa79e00, 0xc000285650}})
/Open-IM-Server/cmd/Open-IM-SDK-Core/open_im_sdk/conversation_msg.go:452 +0x2a7
open_im_sdk/open_im_sdk.doListener({0xbb0ad0, 0xc00037ba20})
/Open-IM-Server/cmd/Open-IM-SDK-Core/open_im_sdk/cmd_interface.go:97 +0xf1
created by open_im_sdk/open_im_sdk.(*UserRelated).initSDK
/Open-IM-Server/cmd/Open-IM-SDK-Core/open_im_sdk/init_login.go:31 +0x1cf

另外,在msg_gate的error中会有很多以下错误

2021-11-24 18:05:49.567 [ERRO] [PID:201] [FilePath:gate/ws_server.go:72] [OperationID:] [error:websocket: close 1006 (abnormal closure): unexpected EOF] [userIP:192.168.3.209:44738] [userUid:arii1637724047333053917 Web] WS ReadMsg error

Group send message failed when messagecallback is enable,

#token config
tokenpolicy:
  accessSecret: "open_im_server"
  # Token effective time seconds as a unit
  #Seven days   7*24*60*60
  accessExpire: 604800

messagecallback:
  callbackSwitch: true
  callbackUrl: "xxx/callback/"

source code link

	if config.Config.MessageCallBack.CallbackSwitch {
		bMsg, err := http2.Post(config.Config.MessageCallBack.CallbackUrl, MsgCallBackReq{
			SendID:      pb.SendID,
			RecvID:      pb.RecvID,
			Content:     pb.Content,
			SendTime:    pbData.SendTime,
			MsgFrom:     pbData.MsgFrom,
			ContentType: pb.ContentType,
			SessionType: pb.SessionType,
			PlatformID:  pb.PlatformID,
		}, "application/json; charset=utf-8")
		if err != nil {
			log.ErrorByKv("callback to Business server err", pb.OperationID, "args", pb.String(), "err", err.Error())
			return returnMsg(&replay, pb, http.StatusInternalServerError, http.StatusText(http.StatusInternalServerError), "", 0)
		} else if err = json.Unmarshal(bMsg, &m); err != nil {
			log.ErrorByKv("ws json Unmarshal err", pb.OperationID, "args", pb.String(), "err", err.Error())
			return returnMsg(&replay, pb, 200, err.Error(), "", 0)
		} else {
			if m.ErrCode != 0 {
				return returnMsg(&replay, pb, m.ResponseErrCode, m.ErrMsg, "", 0)
			} else {
				pbData.Content = m.ResponseResult.ModifiedMsg
				err1 := rpc.sendMsgToKafka(&pbData, pbData.RecvID)
				err2 := rpc.sendMsgToKafka(&pbData, pbData.SendID)
				if err1 != nil || err2 != nil {
					return returnMsg(&replay, pb, 201, "kafka send msg err", "", 0)
				}
				return returnMsg(&replay, pb, 0, "", serverMsgID, pbData.SendTime)
			}
		}
	} else {
		switch pbData.SessionType {
		case constant.SingleChatType:
			err1 := rpc.sendMsgToKafka(&pbData, pbData.RecvID)
			err2 := rpc.sendMsgToKafka(&pbData, pbData.SendID)
			if err1 != nil || err2 != nil {
				return returnMsg(&replay, pb, 201, "kafka send msg err", "", 0)
			}
			return returnMsg(&replay, pb, 0, "", serverMsgID, pbData.SendTime)
		case constant.GroupChatType:
			etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName)
			client := pbGroup.NewGroupClient(etcdConn)
			req := &pbGroup.GetGroupAllMemberReq{
				GroupID:     pbData.RecvID,
				Token:       pbData.Token,
				OperationID: pbData.OperationID,
			}
			reply, err := client.GetGroupAllMember(context.Background(), req)
			if err != nil {
				log.Error(pbData.Token, pbData.OperationID, "rpc send_msg getGroupInfo failed, err = %s", err.Error())
				return returnMsg(&replay, pb, 201, err.Error(), "", 0)
			}
			if reply.ErrorCode != 0 {
				log.Error(pbData.Token, pbData.OperationID, "rpc send_msg getGroupInfo failed, err = %s", reply.ErrorMsg)
				return returnMsg(&replay, pb, reply.ErrorCode, reply.ErrorMsg, "", 0)
			}
			var addUidList []string
			switch pbData.ContentType {
			case constant.KickGroupMemberTip:
				var notification content_struct.NotificationContent
				var kickContent group.KickGroupMemberReq
				err := utils.JsonStringToStruct(pbData.Content, &notification)
				if err != nil {
					log.ErrorByKv("json unmarshall err", pbData.OperationID, "err", err.Error())
					return returnMsg(&replay, pb, 200, err.Error(), "", 0)
				} else {
					err := utils.JsonStringToStruct(notification.Detail, &kickContent)
					if err != nil {
						log.ErrorByKv("json unmarshall err", pbData.OperationID, "err", err.Error())
						return returnMsg(&replay, pb, 200, err.Error(), "", 0)
					}
					for _, v := range kickContent.UidListInfo {
						addUidList = append(addUidList, v.UserId)
					}
				}
			case constant.QuitGroupTip:
				addUidList = append(addUidList, pbData.SendID)
			default:
			}
			groupID := pbData.RecvID
			for i, v := range reply.MemberList {
				pbData.RecvID = v.UserId + " " + groupID
				err := rpc.sendMsgToKafka(&pbData, utils.IntToString(i))
				if err != nil {
					return returnMsg(&replay, pb, 201, "kafka send msg err", "", 0)
				}
			}
			for i, v := range addUidList {
				pbData.RecvID = v + " " + groupID
				err := rpc.sendMsgToKafka(&pbData, utils.IntToString(i+1))
				if err != nil {
					return returnMsg(&replay, pb, 201, "kafka send msg err", "", 0)
				}
			}
			return returnMsg(&replay, pb, 0, "", serverMsgID, pbData.SendTime)
		default:

		}

	}

if callbackSwitch: true , It does not send meesage to group

web端获取历史数据

getHistoryMessageList 这个我传入startMsg ,但是我拉取回来的历史数据的第一条数据都是上一次拉取的最后一条消息

unit test is broken when run by vscode

https://github.com/OpenIMSDK/Open-IM-Server/blob/7c3aa7ee0b6321e7888d484ec87947dde671378e/src/common/config/config.go#L157

https://github.com/OpenIMSDK/Open-IM-Server/blob/7c3aa7ee0b6321e7888d484ec87947dde671378e/src/common/config/config.go#L158

Running tool: /usr/local/go/bin/go test -timeout 30s -run ^Test_UserRegister$ Open_IM/src/api/auth

panic: open $ROOT/Open-IM-Server/src/api/auth/config/config.yaml: no such file or directory

goroutine 1 [running]:
Open_IM/src/common/config.init.0()
	$ROOT/Open-IM-Server/src/common/config/config.go:156 +0x89
FAIL	Open_IM/src/api/auth	0.014s
FAIL

mongodb run failed

I follow your step but mongo run failed.
I run it on ubuntu 20.04.
Is there config I should set?
How to resolve this problem?

docker-compose logs below

mongo | 2021-11-02T16:49:23.329+0800 E STORAGE [initandlisten] WiredTiger error (1) [1635842963:329589][1:0x7fce178d4a80], connection: __posix_open_file, 672: /data/db/WiredTiger.wt: handle-open: open: Operation not permitted Raw: [1635842963:329589][1:0x7fce178d4a80], connection: __posix_open_file, 672: /data/db/WiredTiger.wt: handle-open: open: Operation not permitted
mongo | 2021-11-02T16:49:23.330+0800 W STORAGE [initandlisten] Failed to start up WiredTiger under any compatibility version.
mongo | 2021-11-02T16:49:23.330+0800 F STORAGE [initandlisten] Reason: 1: Operation not permitted
mongo | 2021-11-02T16:49:23.330+0800 F - [initandlisten] Fatal Assertion 28595 at src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp 711
mongo | 2021-11-02T16:49:23.330+0800 F - [initandlisten] \n\naborting after fassert() failure\n\n
mongo | 2021-11-02T16:50:23.782+0800 I CONTROL [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'
mongo | 2021-11-02T16:50:23.785+0800 I CONTROL [initandlisten] MongoDB starting : pid=1 port=27017 dbpath=/data/db 64-bit host=53e352dcff28
mongo | 2021-11-02T16:50:23.785+0800 I CONTROL [initandlisten] db version v4.0.27
mongo | 2021-11-02T16:50:23.785+0800 I CONTROL [initandlisten] git version: d47b151b55f286546e7c7c98888ae0577856ca20
mongo | 2021-11-02T16:50:23.785+0800 I CONTROL [initandlisten] OpenSSL version: OpenSSL 1.0.2g 1 Mar 2016
mongo | 2021-11-02T16:50:23.785+0800 I CONTROL [initandlisten] allocator: tcmalloc
mongo | 2021-11-02T16:50:23.785+0800 I CONTROL [initandlisten] modules: none
mongo | 2021-11-02T16:50:23.785+0800 I CONTROL [initandlisten] build environment:
mongo | 2021-11-02T16:50:23.785+0800 I CONTROL [initandlisten] distmod: ubuntu1604
mongo | 2021-11-02T16:50:23.785+0800 I CONTROL [initandlisten] distarch: x86_64
mongo | 2021-11-02T16:50:23.785+0800 I CONTROL [initandlisten] target_arch: x86_64
mongo | 2021-11-02T16:50:23.785+0800 I CONTROL [initandlisten] options: { net: { bindIpAll: true } }
mongo | 2021-11-02T16:50:23.788+0800 I STORAGE [initandlisten] wiredtiger_open config: create,cache_size=11513M,cache_overflow=(file_max=0M),session_max=20000,eviction=(threads_min=4,threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),statistics_log=(wait=0),verbose=(recovery_progress),
mongo | 2021-11-02T16:50:24.233+0800 E STORAGE [initandlisten] WiredTiger error (17) [1635843024:233922][1:0x7f2f7a759a80], connection: __posix_open_file, 672: /data/db/WiredTiger.wt: handle-open: open: File exists Raw: [1635843024:233922][1:0x7f2f7a759a80], connection: __posix_open_file, 672: /data/db/WiredTiger.wt: handle-open: open: File exists
mongo | 2021-11-02T16:50:24.235+0800 I STORAGE [initandlisten] WiredTiger message unexpected file WiredTiger.wt found, renamed to WiredTiger.wt.186
mongo | 2021-11-02T16:50:24.236+0800 E STORAGE [initandlisten] WiredTiger error (1) [1635843024:236190][1:0x7f2f7a759a80], connection: __posix_open_file, 672: /data/db/WiredTiger.wt: handle-open: open: Operation not permitted Raw: [1635843024:236190][1:0x7f2f7a759a80], connection: __posix_open_file, 672: /data/db/WiredTiger.wt: handle-open: open: Operation not permitted
mongo | 2021-11-02T16:50:24.242+0800 E STORAGE [initandlisten] WiredTiger error (17) [1635843024:242125][1:0x7f2f7a759a80], connection: __posix_open_file, 672: /data/db/WiredTiger.wt: handle-open: open: File exists Raw: [1635843024:242125][1:0x7f2f7a759a80], connection: __posix_open_file, 672: /data/db/WiredTiger.wt: handle-open: open: File exists
mongo | 2021-11-02T16:50:24.243+0800 I STORAGE [initandlisten] WiredTiger message unexpected file WiredTiger.wt found, renamed to WiredTiger.wt.187
mongo | 2021-11-02T16:50:24.244+0800 E STORAGE [initandlisten] WiredTiger error (1) [1635843024:244227][1:0x7f2f7a759a80], connection: __posix_open_file, 672: /data/db/WiredTiger.wt: handle-open: open: Operation not permitted Raw: [1635843024:244227][1:0x7f2f7a759a80], connection: __posix_open_file, 672: /data/db/WiredTiger.wt: handle-open: open: Operation not permitted
mongo | 2021-11-02T16:50:24.249+0800 E STORAGE [initandlisten] WiredTiger error (17) [1635843024:249671][1:0x7f2f7a759a80], connection: __posix_open_file, 672: /data/db/WiredTiger.wt: handle-open: open: File exists Raw: [1635843024:249671][1:0x7f2f7a759a80], connection: __posix_open_file, 672: /data/db/WiredTiger.wt: handle-open: open: File exists
mongo | 2021-11-02T16:50:24.251+0800 I STORAGE [initandlisten] WiredTiger message unexpected file WiredTiger.wt found, renamed to WiredTiger.wt.188
mongo | 2021-11-02T16:50:24.251+0800 E STORAGE [initandlisten] WiredTiger error (1) [1635843024:251823][1:0x7f2f7a759a80], connection: __posix_open_file, 672: /data/db/WiredTiger.wt: handle-open: open: Operation not permitted Raw: [1635843024:251823][1:0x7f2f7a759a80], connection: __posix_open_file, 672: /data/db/WiredTiger.wt: handle-open: open: Operation not permitted
mongo | 2021-11-02T16:50:24.252+0800 W STORAGE [initandlisten] Failed to start up WiredTiger under any compatibility version.
mongo | 2021-11-02T16:50:24.252+0800 F STORAGE [initandlisten] Reason: 1: Operation not permitted
mongo | 2021-11-02T16:50:24.252+0800 F - [initandlisten] Fatal Assertion 28595 at src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp 711
mongo | 2021-11-02T16:50:24.252+0800 F - [initandlisten] \n\n
aborting after fassert() failure\n\n

web端获取历史数据

getHistoryMessageList 这个我传入startMsg ,但是我拉取回来的历史数据的第一条数据都是上一次拉取的最后一条消息

[BUG] <title>

Environment:

Physical Memory Capacity:

Docker Image:

Code Version:

Component installation:

Log File:

screenshot:

uniapp版本短信验证失败

收到验证码后填写到app上提示: 验证码已失效
看到 pages/login/vercode.vue 中有使用res.verifyCode === 1 判断, 但接口返回没有verifyCode字段
image

有无计划将kafka更换成pulsar?

在单机模式中,可以减少组件数量。

另外,kafka没有官方的docker镜像,使用第三方的镜像无法保证安全性。

Failed to execute script docker-compose

kee@keeStepdeMacBook-Pro Open-IM-Server % docker-compose up -d
Traceback (most recent call last):
File "urllib3/connectionpool.py", line 670, in urlopen
File "urllib3/connectionpool.py", line 392, in _make_request
File "http/client.py", line 1255, in request
File "http/client.py", line 1301, in _send_request
File "http/client.py", line 1250, in endheaders
File "http/client.py", line 1010, in _send_output
File "http/client.py", line 950, in send
File "docker/transport/unixconn.py", line 43, in connect
FileNotFoundError: [Errno 2] No such file or directory

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "requests/adapters.py", line 439, in send
File "urllib3/connectionpool.py", line 726, in urlopen
File "urllib3/util/retry.py", line 410, in increment
File "urllib3/packages/six.py", line 734, in reraise
File "urllib3/connectionpool.py", line 670, in urlopen
File "urllib3/connectionpool.py", line 392, in _make_request
File "http/client.py", line 1255, in request
File "http/client.py", line 1301, in _send_request
File "http/client.py", line 1250, in endheaders
File "http/client.py", line 1010, in _send_output
File "http/client.py", line 950, in send
File "docker/transport/unixconn.py", line 43, in connect
urllib3.exceptions.ProtocolError: ('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "docker/api/client.py", line 214, in _retrieve_server_version
File "docker/api/daemon.py", line 181, in version
File "docker/utils/decorators.py", line 46, in inner
File "docker/api/client.py", line 237, in _get
File "requests/sessions.py", line 543, in get
File "requests/sessions.py", line 530, in request
File "requests/sessions.py", line 643, in send
File "requests/adapters.py", line 498, in send
requests.exceptions.ConnectionError: ('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "docker-compose", line 3, in
File "compose/cli/main.py", line 81, in main
File "compose/cli/main.py", line 200, in perform_command
File "compose/cli/command.py", line 60, in project_from_options
File "compose/cli/command.py", line 152, in get_project
File "compose/cli/docker_client.py", line 41, in get_client
File "compose/cli/docker_client.py", line 170, in docker_client
File "docker/api/client.py", line 197, in init
File "docker/api/client.py", line 221, in _retrieve_server_version
docker.errors.DockerException: Error while fetching server API version: ('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))
[43517] Failed to execute script docker-compose
kee@kejudeMacBook-Pro Open-IM-Server % docker-compose up -d
Traceback (most recent call last):
File "urllib3/connectionpool.py", line 670, in urlopen
File "urllib3/connectionpool.py", line 392, in _make_request
File "http/client.py", line 1255, in request
File "http/client.py", line 1301, in _send_request
File "http/client.py", line 1250, in endheaders
File "http/client.py", line 1010, in _send_output
File "http/client.py", line 950, in send
File "docker/transport/unixconn.py", line 43, in connect
FileNotFoundError: [Errno 2] No such file or directory

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "requests/adapters.py", line 439, in send
File "urllib3/connectionpool.py", line 726, in urlopen
File "urllib3/util/retry.py", line 410, in increment
File "urllib3/packages/six.py", line 734, in reraise
File "urllib3/connectionpool.py", line 670, in urlopen
File "urllib3/connectionpool.py", line 392, in _make_request
File "http/client.py", line 1255, in request
File "http/client.py", line 1301, in _send_request
File "http/client.py", line 1250, in endheaders
File "http/client.py", line 1010, in _send_output
File "http/client.py", line 950, in send
File "docker/transport/unixconn.py", line 43, in connect
urllib3.exceptions.ProtocolError: ('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "docker/api/client.py", line 214, in _retrieve_server_version
File "docker/api/daemon.py", line 181, in version
File "docker/utils/decorators.py", line 46, in inner
File "docker/api/client.py", line 237, in _get
File "requests/sessions.py", line 543, in get
File "requests/sessions.py", line 530, in request
File "requests/sessions.py", line 643, in send
File "requests/adapters.py", line 498, in send
requests.exceptions.ConnectionError: ('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "docker-compose", line 3, in
File "compose/cli/main.py", line 81, in main
File "compose/cli/main.py", line 200, in perform_command
File "compose/cli/command.py", line 60, in project_from_options
File "compose/cli/command.py", line 152, in get_project
File "compose/cli/docker_client.py", line 41, in get_client
File "compose/cli/docker_client.py", line 170, in docker_client
File "docker/api/client.py", line 197, in init
File "docker/api/client.py", line 221, in _retrieve_server_version
docker.errors.DockerException: Error while fetching server API version: ('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))
[43520] Failed to execute script docker-compose

check_all.sh脚本不兼容mac

check_all.sh脚本中使用了netstat命令,部分参数在mac环境下不兼容。报错如下:

➜  script git:(dev) ✗ ./check_all.sh
netstat: illegal option -- e
Usage:	netstat [-AaLlnW] [-f address_family | -p protocol]
	netstat [-gilns] [-f address_family]
	netstat -i | -I interface [-w wait] [-abdgRtS]
	netstat -s [-s] [-f address_family | -p protocol] [-w wait]
	netstat -i | -I interface -s [-f address_family | -p protocol]
	netstat -m [-m]
	netstat -r [-Aaln] [-f address_family]
	netstat -rs [-s]

openImApiPort service does not start normally,not initiated port is 10000
please check ../logs/openIM.log

既然是go写的全新系统

既然是go写的全新系统,组件支持应该抛弃老掉牙的mysql,mongodb,kafka,尽量用go写的先进的全新系统,如cockroachdb,nats等。

发送消息导致服务崩溃

2021/11/10 14:40:55 [ handle_func.go : 32 ] [Basic Info Authentication Success reqFuncName SendMessage data {"recvID":"d5645454518","groupID":null,"onlineUserOnly":false,"message":"{"clientMsgID":"03fe998e50949a7a6fcd316fc37736b0","serverMsgID":"","createTime":1636526455552711420,"sendTime":1636526455552711420,"sessionType":0,"sendID":"d5645454517","recvID":"","msgFrom":100,"contentType":101,"platformID":5,"forceList":null,"senderNickName":"张三","senderFaceUrl":"","groupID":"","content":"abc","seq":0,"isRead":false,"status":1,"remark":"","pictureElem":{"sourcePath":"","sourcePicture":{"uuid":"","type":"","size":0,"width":0,"height":0,"url":""},"bigPicture":{"uuid":"","type":"","size":0,"width":0,"height":0,"url":""},"snapshotPicture":{"uuid":"","type":"","size":0,"width":0,"height":0,"url":""}},"soundElem":{"uuid":"","soundPath":"","sourceUrl":"","dataSize":0,"duration":0},"videoElem":{"videoPath":"","videoUUID":"","videoUrl":"","videoType":"","videoSize":0,"duration":0,"snapshotPath":"","snapshotUUID":"","snapshotSize":0,"snapshotUrl":"","snapshotWidth":0,"snapshotHeight":0},"fileElem":{"filePath":"","uuid":"","sourceUrl":"","fileName":"","fileSize":0},"mergeElem":{"title":"","abstractList":null,"multiMessage":null},"atElem":{"text":"","atUserList":[],"isAtSelf":false},"locationElem":{"description":"","longitude":0,"latitude":0},"customElem":{"data":"","description":"","extension":""},"quoteElem":{"text":"","quoteMessage":null}}"} recv jsonMsg: {"reqFuncName":"SendMessage","operationID":"1tvam1343n6455449","uid":"d5645454517","data":"{"recvID":"d5645454518","groupID":null,"onlineUserOnly":false,"message":"{\"clientMsgID\":\"03fe998e50949a7a6fcd316fc37736b0\",\"serverMsgID\":\"\",\"createTime\":1636526455552711420,\"sendTime\":1636526455552711420,\"sessionType\":0,\"sendID\":\"d5645454517\",\"recvID\":\"\",\"msgFrom\":100,\"contentType\":101,\"platformID\":5,\"forceList\":null,\"senderNickName\":\"张三\",\"senderFaceUrl\":\"\",\"groupID\":\"\",\"content\":\"abc\",\"seq\":0,\"isRead\":false,\"status\":1,\"remark\":\"\",\"pictureElem\":{\"sourcePath\":\"\",\"sourcePicture\":{\"uuid\":\"\",\"type\":\"\",\"size\":0,\"width\":0,\"height\":0,\"url\":\"\"},\"bigPicture\":{\"uuid\":\"\",\"type\":\"\",\"size\":0,\"width\":0,\"height\":0,\"url\":\"\"},\"snapshotPicture\":{\"uuid\":\"\",\"type\":\"\",\"size\":0,\"width\":0,\"height\":0,\"url\":\"\"}},\"soundElem\":{\"uuid\":\"\",\"soundPath\":\"\",\"sourceUrl\":\"\",\"dataSize\":0,\"duration\":0},\"videoElem\":{\"videoPath\":\"\",\"videoUUID\":\"\",\"videoUrl\":\"\",\"videoType\":\"\",\"videoSize\":0,\"duration\":0,\"snapshotPath\":\"\",\"snapshotUUID\":\"\",\"snapshotSize\":0,\"snapshotUrl\":\"\",\"snapshotWidth\":0,\"snapshotHeight\":0},\"fileElem\":{\"filePath\":\"\",\"uuid\":\"\",\"sourceUrl\":\"\",\"fileName\":\"\",\"fileSize\":0},\"mergeElem\":{\"title\":\"\",\"abstractList\":null,\"multiMessage\":null},\"atElem\":{\"text\":\"\",\"atUserList\":[],\"isAtSelf\":false},\"locationElem\":{\"description\":\"\",\"longitude\":0,\"latitude\":0},\"customElem\":{\"data\":\"\",\"description\":\"\",\"extension\":\"\"},\"quoteElem\":{\"text\":\"\",\"quoteMessage\":null}}"}"}]
panic: interface conversion: interface {} is nil, not string

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.