GithubHelp home page GithubHelp logo

openimsdk / openim-sdk-core Goto Github PK

View Code? Open in Web Editor NEW
306.0 306.0 296.0 8.51 MB

Instant Messaging

Home Page: https://openim.io

License: Apache License 2.0

Makefile 1.22% Go 96.90% JavaScript 1.17% Shell 0.71%
android im imsdk ios sdk

openim-sdk-core's People

Contributors

andrewzuo01 avatar bantanger avatar bloomingg avatar cncsmonster avatar cubxxw avatar fgadvancer avatar hanzhixiao avatar kubbot avatar ouyangdage avatar plutoyty avatar skiffer-git avatar std-s avatar sylariam avatar wangchuxiao-dev avatar withchao avatar yuanjey avatar zhaolibo1989 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

openim-sdk-core's Issues

生产环境崩溃

=/lib/arm64/libgojni.so (go_seq_from_refnum+236)
apex/com.android.runtime/lib64/bionic/libc.so (abort+180)

Bug reports for links in OpenIM docs

Summary

Status Count
🔍 Total 74
✅ Successful 58
⏳ Timeouts 0
🔀 Redirected 0
👻 Excluded 0
❓ Unknown 0
🚫 Errors 16

Errors per input

Errors in CONTRIBUTING.md

Errors in README.md

反复刷新,踢人,会导致ws crash,原因是多次close已经被close的socket

`
func NewWs(wsRespAsyn *WsRespAsyn, wsConn *WsConn, cmdCh chan common.Cmd2Value, pushMsgAndMaxSeqCh chan common.Cmd2Value, cmdHeartbeatCh chan common.Cmd2Value) *Ws {

defer func() {
	if err := recover(); err != nil {
		log.Warn("recover from panic for NewWS func")
	}
} () // 加一个捕获就可以

p := Ws{WsRespAsyn: wsRespAsyn, WsConn: wsConn, cmdCh: cmdCh, pushMsgAndMaxSeqCh: pushMsgAndMaxSeqCh, cmdHeartbeatCh: cmdHeartbeatCh}
go p.ReadData()

return &p

}`

离线推送测试出的问题

现在2.0版本我测试了,客户端设置了offlinePushInfo,在线也推送,
而且客户端设置offlinePushInfo为{},现在离线也不推送
我觉得离线这块,还是按1.0的比较好,用户不在线才离线推送

群主修改会话的名字,离线用户登录后发现会话的名字不是最新的

internal/group/group.go

函数 DoNotification

if msg.SendTime < g.loginTime {
log.Warn(operationID, "GroupDoNotification ignore notification ", msg.ClientMsgID, msg.ServerMsgID, msg.Seq, msg.ContentType)
return
}

加这个的用意是什么,目前遇到的问题:群主修改会话的名字,离线用户登录后发现会话的名字不是最新的。被return拦截了

邀请用户加入群组(可批量) - 809

代码:
const options = {
groupID: "378853551",
reason: "",
userIDList: ['27d6c180d3424e699bf9cfdbff90df98']
}
console.log('--->',options);
this.$openIM.inviteUserToGroup(options).then(({ data }) => {
console.log('加入群聊-->', data);
}).catch(err => {
console.log('加入群聊error-->', err)
wx.showToast({
title: '网络异常'
})
})

报错信息

errCode: 809
errMsg: "==> open_im_sdk/pkg/common.CheckErrAndResp()@115: api resp failed: ==> open_im_sdk/pkg/network.Post2Api()@43: post: ==> open_im_sdk/pkg/network.postLogic()@79: status code failed http://127.0.0.1:10002/group/invite_user_to_group: 500 Internal Server Error"
event: "InviteUserToGroup"
operationID: "knf2nfjm631665207045641lida111"

【RFC101】A series of plans before refactoring

Proposal for Refactoring Plan

Background

The current codebase is becoming increasingly difficult to maintain and scale. To address this, we propose a comprehensive refactoring plan to improve the code quality, maintainability, and scalability of the project.

Goals

  • Improve the directory structure to better organize the codebase and make it easier to navigate.
  • Design a makefile to automate common tasks and simplify the development process.
  • Implement a CICD (Continuous Integration and Continuous Deployment) pipeline to automate the build and deployment process.
  • Streamline the development process to make it more efficient and effective.
  • Design a logging system to capture important events and make it easier to debug issues.
  • Create a contributor's guide to encourage and facilitate contributions from the community.
  • Design a merge strategy to ensure that changes are integrated smoothly and efficiently.

Plan

Directory Design

We will reorganize the codebase into a more logical and intuitive directory structure. This will involve grouping related files and folders together and removing unnecessary clutter.

Makefile Design

We will design a makefile to automate common tasks such as building, testing, and deploying the project. This will make it easier for developers to focus on writing code rather than dealing with system-level tasks.

CICD Actions Design

We will implement a CICD pipeline to automate the build and deployment process. This will involve using tools such as Jenkins and Docker to create a streamlined workflow.

Development Process Design

We will streamline the development process by implementing best practices such as code reviews, automated testing, and continuous integration.

Logging Design

We will design a logging system to capture important events and make it easier to debug issues. This will involve using tools such as zaps, as →

https://github.com/kubecub/log

Contributor's Guide Design

We will create a contributor's guide to encourage and facilitate contributions from the community. This will involve providing clear guidelines for submitting code, reporting issues, and contributing to documentation.

Merge Design

We will design a merge strategy to ensure that changes are integrated smoothly and efficiently. This will involve using tools such as Git and GitHub to manage branches and merge requests.

Conclusion

By implementing this refactoring plan, we will improve the code quality, maintainability, and scalability of the project. This will make it easier for developers to work on the project and ensure that it remains relevant and useful for years to come.

Tasks

Type Improvement Issues PR Status Priority
Directory Design Improve the directory structure to better organize the codebase and make it easier to navigate. #51 🥇
Makefile Design Design a makefile to automate common tasks and simplify the development process. 🥈
CICD Actions Design Implement a CICD (Continuous Integration and Continuous Deployment) pipeline to automate the build and deployment process. 🥉
Development Process Design Streamline the development process to make it more efficient and effective. 4️⃣
Logging Design Design a logging system to capture important events and make it easier to debug issues. 5️⃣
Contributor's Guide Design Create a contributor's guide to encourage and facilitate contributions from the community. 6️⃣
Merge Design Design a merge strategy to ensure that changes are integrated smoothly and efficiently. 7️⃣

【RFC 102】Contributing to Open-IM-SDK-Core

Contributing to Open-IM-SDK-Core

So, you want to hack on Open-IM-SDK-Core? Yay!

First of all, thank you for considering contributing to our project! We appreciate your time and effort, and we value any contribution, whether it's reporting a bug, suggesting a new feature, or submitting a pull request.

This document provides guidelines and best practices to help you contribute effectively.

Requirements

Please meet the minimum version of the Go language published in go.mod. If you want to manage the Go language version, we provide tools to install gvm in our Makefile

You'd better use Linux as the development environment, Linux with Makefile can help you quickly build and test Open-IM-SDK-Core project.

If you are familiar with Makefile , you can easily see the clever design of the Open-IM-SDK-Core Makefile. Storing the necessary tools such as golangci in the /tools directory can avoid some tool version issues.

The Makefile is for every developer, even if you don't know how to use the Makefile tool, don't worry, we provide two great commands to get you up to speed with the Makefile architecture, make help and make help-all, it can reduce problems of the developing environment.

Code of Conduct

We divide the problem into security and general problems:

Reporting security issues

Security issues are always treated seriously. As our usual principle, we discourage anyone to spread security issues. If you find a security issue of Open-IM-SDK-Core, please do not discuss it in public and even do not open a public issue.

Instead we encourage you to send us a private email to [email protected] to report this.

Reporting general issues

To be honest, we regard every user of Open-IM-SDK-Coreas a very kind contributor. After experiencing Open-IM-SDK-Core, you may have some feedback for the project. Then feel free to open an issue via NEW ISSUE.

Since we collaborate project Open-IM-SDK-Core in a distributed way, we appreciate WELL-WRITTEN, DETAILED, EXPLICIT issue reports. To make the communication more efficient, we wish everyone could search if your issue is an existing one in the searching list. If you find it existing, please add your details in comments under the existing issue instead of opening a brand new one.

To make the issue details as standard as possible, we setup an ISSUE TEMPLATE for issue reporters. You can find three kinds of issue templates there: question, bug report and feature request. Please BE SURE to follow the instructions to fill fields in template.

There are a lot of cases when you could open an issue:

  • bug report
  • feature request
  • Open-IM-SDK-Core performance issues
  • feature proposal
  • feature design
  • help wanted
  • doc incomplete
  • test improvement
  • any questions on Open-IM-SDK-Core project
  • and so on

Also, we must be reminded when submitting a new question about Open-IM-SDK-Core, please remember to remove the sensitive data from your post. Sensitive data could be password, secret key, network locations, private business data and so on.

Code and doc contribution

Every action to make project Open-IM-SDK-Core better is encouraged. On GitHub, every improvement for Open-IM-SDK-Core could be via a PR (short for pull request).

  • If you find a typo, try to fix it!
  • If you find a bug, try to fix it!
  • If you find some redundant codes, try to remove them!
  • If you find some test cases missing, try to add them!
  • If you could enhance a feature, please DO NOT hesitate!
  • If you find code implicit, try to add comments to make it clear!
  • If you find code ugly, try to refactor that!
  • If you can help to improve documents, it could not be better!
  • If you find document incorrect, just do it and fix that!
  • ...

Where should I start?

  • If you are new to the project, don't know how to contribute Open-IM-SDK-Core, please check out the good first issue label.
  • You should be good at filtering the Open-IM-SDK-Core issue tags and finding the ones you like, such as RFC for big initiatives, features for feature proposals, and bug fixes.
  • If you are looking for something to work on, check out our open issues.
  • If you have an idea for a new feature, please open an issue, and we can discuss it.

Design documents

Any substantial design deserves a design document. Design documents are written with Google Docs OR Notion、Even mark RFC in issues, discussions and should be shared with the community by adding the doc to our shared Drive and sending a note to the appropriate working group to let people know the doc is there.

Anybody can access the shared Drive for reading. To get access to comment. Once you've done that, head to the shared Drive and behold all the docs.

In addition to that, we'd love to invite you to join our Slack where you can play with your imagination, tell us what you're working on, and get a quick response.

When documenting a new design, we recommend a 2-step approach:

  1. Use the short-form RFC template to outline your ideas and get early feedback.
  2. Once you have received sufficient feedback and consensus, you may use the longer-form design doc template to specify and discuss your design in more details.

In order to contribute a feature to Open-IM-SDK-Core you'll need to go through the following steps:

  • Discuss your idea with the appropriate working groups on the working group's Slack channel.
  • Once there is general agreement that the feature is useful, create a GitHub issue to track the discussion. The issue should include information about the requirements and use cases that it is trying to address.
  • Include a discussion of the proposed design and technical details of the implementation in the issue.

But keep in mind that there is no guarantee of it being accepted and so it is usually best to get agreement on the idea/design before time is spent coding it. However, sometimes seeing the exact code change can help focus discussions, so the choice is up to you.

Getting Started

To propose PR for the Open-IM-SDK-Core item, we assume you have registered a GitHub ID. Then you could finish the preparation in the following steps:

  1. Fork the repository(Open-IM-SDK-Core)

  2. CLONE your own repository to master locally. Use git clone https://github.com/<your-username>/Open-IM-SDK-Core.git to clone repository to your local machine. Then you can create new branches to finish the change you wish to make.

  3. Set Remote upstream to be https://github.com/OpenIMSDK/Open-IM-SDK-Core.git using the following two commands:

    ❯ git remote add upstream https://github.com/OpenIMSDK/Open-IM-SDK-Core.git
    ❯ git remote set-url --push upstream no-pushing

    With this remote setting, you can check your git remote configuration like this:

    git remote -v
    origin     https://github.com/<your-username>/Open-IM-SDK-Core.git (fetch)
    origin     https://github.com/<your-username>/Open-IM-SDK-Core.git (push)
    upstream   https://github.com/OpenIMSDK/Open-IM-SDK-Core.git (fetch)
    upstream   no-pushing (push)

    Adding this, we can easily synchronize local branches with upstream branches.

  4. Create a new branch for your changes (use a descriptive name, such as fix-bug-123 or add-new-feature).

    cd Open-IM-SDK-Core
    ❯ git fetch upstream
    ❯ git checkout main

    Create a new branch:

    ❯ git checkout -b <new-branch>

    Make any change on the new-branch then use Makefile build and test your codes.

  5. Commit your changes to your local branch, lint before committing and commit with sign-off

    ❯ git rebase upstream/main
    ❯ make link	  # golangci-lint run -c .golangci.yml
    ❯ git add -A  # add changes to staging
    ❯ git commit -a -s -m "message for your changes" # -s adds a Signed-off-by trailer
  6. Push your branch to your forked repository, it is recommended to have only one commit for a PR.

    # sync up with upstream
    ❯ git fetch upstream main
    ❯ git rebase upstream/main
    ❯ 
    ❯ git rebase -i	<commit-id> # rebase with interactive mode to squash your commits into a single one
    ❯ git push # push to the remote repository, if it's a first time push, run git push --set-upstream origin <new-branch># sync up with upstream
    ❯ git fetch upstream main
    git rebase upstream/main
    
    ❯ git rebase -i	<commit-id> # rebase with interactive mode to squash your commits into a single one
    ❯ git push # push to the remote repository, if it's a first time push, run git push --set-upstream origin <new-branch>

    You can also use git commit -s --amend && git push -f to update modifications on the previous commit.

    If you have developed multiple features in the same branch, you should create PR separately by rebasing to the main branch between each push:

    # create new branch, for example git checkout -b feature/infra
    ❯ git checkout -b <new branch>
    # update some code, feature1
    ❯ git add -A
    ❯ git commit -m -s "feat: feature one"
    ❯ git push # if it's first time push, run git push --set-upstream origin <new-branch>
    # then create pull request, and merge
    # update some new feature, feature2, rebase main branch first.
    ❯ git rebase upstream/main # rebase the current branch to upstream/main branch
    ❯ git add -A
    ❯ git commit -m -s "feat: feature two"
    # then create pull request, and merge
  7. File a pull request to OpenIMSDK/Open-IM-SDK-Core:main

    It is recommended to review your changes before filing a pull request. Check if your code doesn't conflict with the main branch and no redundant code is included.

Style and Specification

Commit Rules

Actually in sealos, we take two rules serious when committing:

**🥇 Commit Message: **

Commit message could help reviewers better understand what the purpose of submitted PR is. It could help accelerate the code review procedure as well. We encourage contributors to use EXPLICIT commit message rather than ambiguous message. In general, we advocate the following commit message type:

We use Semantic Commits to make it easier to understand what a commit does and to build pretty changelogs. Please use the following prefixes for your commits:

  • docs: xxxx. For example, "docs: add docs about storage installation".
  • feature: xxxx.For example, "feature: make result show in sorted order".
  • bugfix: xxxx. For example, "bugfix: fix panic when input nil parameter".
  • style: xxxx. For example, "style: format the code style of Constants.java".
  • refactor: xxxx. For example, "refactor: simplify to make codes more readable".
  • test: xxx. For example, "test: add unit test case for func InsertIntoArray".
  • chore: xxx. For example, "chore: integrate travis-ci". It's the type of mantainance change.
  • other readable and explicit expression ways.

On the other side, we discourage contributors from committing message like the following ways:

  • fix bug
  • update
  • add doc

🥈 Commit Content

Commit content represents all content changes included in one commit. We had better include things in one single commit which could support reviewer's complete review without any other commits' help.

In another word, contents in one single commit can pass the CI to avoid code mess. In brief, there are two minor rules for us to keep in mind:

  1. avoid very large change in a commit;
  2. complete and reviewable for each commit.

No matter what the commit message, or commit content is, we do take more emphasis on code review.

An example for this could be:

❯ git commit -m "docs: add a new section to the README"

PR Description

PR is the only way to make change to Open-IM-SDK-Core project files. To help reviewers better get your purpose, PR description could not be too detailed. We encourage contributors to follow the PR template to finish the pull request.

You can find some very formal PR in RFC issues and learn about them.

Opening PRs:

  • As long as you are working on your PR, please mark it as a draft
  • Please make sure that your PR is up-to-date with the latest changes in main
  • Mention the issue that your PR is addressing (Fix: #{ID_1}, #{ID_2})
  • Make sure that your PR passes all checks

Reviewing PRs:

  • Be respectful and constructive
  • Assign yourself to the PR
  • Check if all checks are passing
  • Suggest changes instead of simply commenting on found issues
  • If you are unsure about something, ask the author
  • If you are not sure if the changes work, try them out
  • Reach out to other reviewers if you are unsure about something
  • If you are happy with the changes, approve the PR
  • Merge the PR once it has all approvals and the checks are passing

⚠️ DCO check:

We have a DCO check which runs on every PR to verify that the commit has been signed off.

To sign off the last commit you made, you can use:

❯ git commit --amend --signoffgit commit --amend --signoff

You can also automate signing off your commits by adding the following to your .zshrc or .bashrc:

git() {
  if [ $# -gt 0 ] && [[ "$1" == "commit" ]] ; then
     shift
     command git commit --signoff "$@"
  else
     command git "$@"
  fi
}

Docs Contribution

The documentation for Open-IM-SDK-Core includes:

  • README.md
  • CONTRIBUTING.md
  • DEVELOPGUIDE.md
  • Official Documentation

Please obey the following rules to better format the docs, which would greatly improve the reading experience.

  1. Please do not use Chinese punctuations in English docs, and vice versa.
  2. Please use upper case letters where applicable, like the first letter of sentences / headings, etc.
  3. Please specify a language for each Markdown code blocks, unless there's no associated languages.
  4. Please insert a whitespace between Chinese and English words.
  5. Please use the correct case for technical terms, such as using HTTP instead of http, MySQL rather than mysql, Kubernetes instead of kubernetes, etc.
  6. Please check if there's any typos in the docs before submitting PRs.

Engage to help anything

We choose GitHub as the primary place for Open-IM-SDK-Core to collaborate. So the latest updates of Open-IM-SDK-Core are always here. Although contributions via PR is an explicit way to help, we still call for any other ways.

  • reply to other's issues if you could;
  • help solve other user's problems;
  • help review other's PR design;
  • discuss about Open-IM-SDK-Core to make things clearer;
  • advocate Open-IM-SDK-Core technology beyond GitHub;
  • write blogs on Open-IM-SDK-Core and so on.

In a word, ANY HELP IS CONTRIBUTION.

Releasing

Releases of Open-IM-SDK-Core are done using Release Please and GoReleaser. The workflow looks like this:

🎯 A PR is merged to the main branch:

  • Release please is triggered, creates or updates a new release PR
  • This is done with every merge to main, the current release PR is updated every time

🎯 Merging the 'release please' PR to main:

  • Release please is triggered, creates a new release and updates the changelog based on the commit messages
  • GoReleaser is triggered, builds the binaries and attaches them to the release
  • Containers are created and pushed to the container registry

With the next relevant merge, a new release PR will be created and the process starts again

**Manually setting the version **

If you want to manually set the version, you can create a PR with an empty commit message that contains the version number in the commit message. For example:

Such a commit can get produced as follows:

❯ git commit --allow-empty -m "chore: release 0.0.3" -m "Release-As: 0.0.3

当客户端发送消息过快的时候,客户端和服务端的记录对不上

环境,mac系统本地server,3月20号pull的代码

当客户端发送消息过快的时候,客户端和服务端的记录对不上,非常容易复现,发送其实是本地添加记录,本地客户端可能出现未读情况,而对方看不到消息,(但是奇怪的是,重新拉取服务器的记录时,却少了数据,查看数据seq序列是连续的)

好友删除bug,没有回调

如题,server是给了resp的,但是SDK里面的 判断貌似出了个小问题

friendDeletedNotification 这个函数 ,应该是判断 toUserID == f.loginUserID

  • if detail.FromToUserID.FromUserID == f.loginUserID {
  • if detail.FromToUserID.ToUserID == f.loginUserID {
    f.SyncFriendList(operationID)
    return
    }

Bug reports for links in OpenIM docs

Summary

Status Count
🔍 Total 74
✅ Successful 58
⏳ Timeouts 0
🔀 Redirected 0
👻 Excluded 0
❓ Unknown 0
🚫 Errors 16

Errors per input

Errors in README.md

Errors in CONTRIBUTING.md

go mod 安装 Open-IM-SDK-Core 不成功

go get github.com/OpenIMSDK/Open-IM-SDK-Core
go get: github.com/OpenIMSDK/[email protected]: parsing go.mod:
module declares its path as: open_im_sdk
but was required as: github.com/OpenIMSDK/Open-IM-SDK-Core

go get Open-IM-SDK-Core 安装失败,这种情况应该怎么解决

多端登录问题

多端登录时,被kick... logout端可能会出现重连的情况,导致多端都被kick logout

When I run Android command, will stuck at 'aar: classes.jar'

Just pull the latest code from Makefile.
android:
go get golang.org/x/mobile/bind
GOARCH=amd64 gomobile bind -v -trimpath -ldflags="-s -w" -o ./open_im_sdk.aar -target=android ./open_im_sdk/ ./open_im_sdk_callback/
Lark20230429-222640
the program will will stuck at
'aar: AndroidManifest.xml
aar: proguard.txt
aar: classes.jar'

Anyone has ever faced that case? anyone suggestion?

Bug reports for links in OpenIM docs

Summary

Status Count
🔍 Total 104
✅ Successful 99
⏳ Timeouts 0
🔀 Redirected 0
👻 Excluded 0
❓ Unknown 0
🚫 Errors 5

Errors per input

Errors in CONTRIBUTING.md

Errors in README.md

UNIQUE constraint

Open-IM-SDK-Core/pkg/db/err_chat_log_model.go , SuperBatchInsertExceptionMsg()函数是否操作了错误的数据库,导致exceptionMsg入库失败?
看代码逻辑,目标表应该是local_sg_err_chat_logs_xxx,实际插入表是local_sg_chat_logs_xxx。

Bug reports for links in OpenIM docs

Summary

Status Count
🔍 Total 89
✅ Successful 82
⏳ Timeouts 0
🔀 Redirected 0
👻 Excluded 0
❓ Unknown 0
🚫 Errors 7

Errors per input

Errors in README.md

Errors in CONTRIBUTING.md

iOS project, two gomobile-compiled xcframeworks will cause symbol conflicts.

我们项目中已经存在一个由 gomobile 编译的 xcframework,在引入 im-sdk 后会导致符号冲突,无法编译通过。我修改了 gomobile 之后,解决了符号冲突问题,但由于存在两个 golang 运行环境,会导致野指针异常,请问这种情况是否有考虑过,如何解决。

There is already an xcframework compiled by gomobile in our project. After introducing im-sdk, it will cause symbol conflicts and cannot be compiled. After I modified gomobile, I solved the problem of symbol conflicts, but due to the existence of two golang operating environments, it will cause wild pointer exceptions. Have you considered this situation and how to solve it?

多次刷新客户端网页导致sdk服务panic

panic: repeated read on failed websocket connection
15639
15640 goroutine 557 [running]:
15641 github.com/gorilla/websocket.(*Conn).NextReader(0xc000df4c60)
15642 /data/gopkg/pkg/mod/github.com/gorilla/[email protected]/conn.go:1001 +0x269
15643 github.com/gorilla/websocket.(*Conn).ReadMessage(0xc000aec270)
15644 /data/gopkg/pkg/mod/github.com/gorilla/[email protected]/conn.go:1064 +0x19
15645 open_im_sdk/internal/interaction.(*Ws).ReadData(0xc0004c6020)
15646 /data/openim/Open_IM/cmd/Open-IM-SDK-Core/internal/interaction/ws.go:132 +0x238
15647 created by open_im_sdk/internal/interaction.NewWs
15648 /data/openim/Open_IM/cmd/Open-IM-SDK-Core/internal/interaction/ws.go:29 +0xe7

版本:2.0.2

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.