• Stars
    star
    201
  • Rank 194,491 (Top 4 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created almost 10 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

LeanCloud Realtime Message JavaScript SDK

LeanCloud JavaScript Realtime SDK

npm npm gzip size Build Status Codecov Known Vulnerabilities

为您的 JavaScript App 接入 LeanCloud 实时通讯服务。

版本说明

遵循 语义化版本

安装稳定版本:

npm install leancloud-realtime --save

安装测试版本:

npm install leancloud-realtime@next --save

安装指定版本:

// 安装 v3 版本
npm install leancloud-realtime@3 --save

支持的运行环境

  • 浏览器 / WebView
    • IE 10+
    • Edge latest
    • Chrome 45+
    • Firefox latest
    • iOS 9.3+
    • Android 4.4+
  • Node.js 4.0+
  • 微信小程序/小游戏 latest
  • React Native 0.26+
  • Electron latest

文档

Demo

插件

package name 描述 版本 文档
leancloud-realtime-plugin-typed-messages 富媒体消息 npm API docs
leancloud-realtime-plugin-groupchat-receipts 群聊已读回执 npm API docs
leancloud-realtime-plugin-webrtc WebRTC 客户端 npm API docs

支持

  • 在使用过程中遇到了问题时
    • 如果你是商用版用户,请新建一个工单。
    • 也可以在 论坛 提问、讨论。

贡献

如果你希望为这个项目贡献代码,请按以下步骤进行:

  1. Fork 这个项目,clone 到本地
  2. 在目录中执行 npm install 安装所需 Node.js 依赖包
  3. 编码,更新测试用例
  4. 运行 npm test 确保测试全部 pass
  5. 提交改动,请遵循 conversational commit message 风格
  6. 发起 Pull Request 至 master 分支

项目的目录结构

.
├── demo
├── deploy.sh                 // 部署 gh-pages 分支
├── release.sh                // 部署 dist 分支
├── dist                      // 打包产出 (dist 分支)
│   ├── core.js               // 核心逻辑(不包含运行时)
│   ├── im.js                 // IM(不包含运行时)
│   ├── im-browser.js         // 浏览器用
│   ├── im-weapp.js           // 微信小程序用
│   └── im-node.js            // node 用
├── proto
│   ├── message-compiled.js     // 使用 pbjs 生成的 message 类
│   ├── message.js              // ES6 wrapper
│   └── message.proto           // proto 原始文件
├── src                       // 源码
│   └── index.js                // 打包入口
├── test                      // 测试用例
│   ├── browser                 // 浏览器测试入口
│   └── index.js                // 测试入口
└── plugins
    ├── typed-messages          // leancloud-realtime-plugin-typed-messages package
    └── webrtc                  // leancloud-realtime-plugin-webrtc package

Architecture

SDK 分为连接层与应用层两部分,只存在应用层对连接层公开 API 的调用,连接层对开发者不可见。

连接层

  • WebSocketPlus:封装了 WebSocket。相比 w3 WebSocket,增加了以下特性:
  • Connection:继承自 WebSocketPlus,增加了与业务相关的功能:
    • 根据 subprotocol 自动处理发送与接收的消息,应用层发送接收的均是 ProtoBuf Message 类
    • send 接口返回 Promise,在 server 回复后才算 send 成功
    • 实现了应用层 ping/pong

应用层

  • Realtime:开发者使用 SDK 的入口,负责访问 router、创建 connection、创建与管理 clients、创建 messageParser(管理消息类型)、监听 connection 的消息并 dispatch 给对应的 client
  • Client:所有的 clients 共享一个 connection
    • IMClient:对应即时通讯中的「用户」,持有 connection 与 conversations,负责创建管理将收到的消息处理后在对应 conversation 上派发,所有的 IMClients 共享一个 messageParser
  • MessageParser 消息解析器,负责将一个 JSON 格式的消息 parse 为对应的 Message 类
  • Conversation:实现对话相关的操作
    • ConversationQuery:对话查询器
  • Messages
    • AVMessage:接口描述,生成文档用
    • Message:消息基类
    • TypedMessage:类型消息基类,继承自 Message
    • TextMessage:文本消息,继承自 TypedMessage
    • 其他富媒体消息类(FileMessage 及其子类、LocationMessage)由于依赖 leancloud-storage,作为另一个独立 package 发布

开启调试模式

Node.js

export DEBUG=LC*

浏览器

localStorage.setItem('debug', 'LC*');

Develop Workflow

本地开发

更新 .proto 后请运行

npm run convert-pb

测试

npm run test:node -- --grep KEYWORDS

浏览器测试

npm run test:browser-local

编译

npm run build

持续集成

合并 PR 到 master 分支后持续集成会自动运行 npm buildnpm run docs,然后将 dist 目录推送到 dist 分支,将文档与 demo 推送到 gh-pages。

Release Process Workflow

  1. 遵循 semver 提升 package.json 中的版本号
  2. npm run changelog 生成新的 changelog.md,润色之
  3. Commit package.jsonchangelog.md
  4. Push to remote master branch
  5. 等待持续集成 pass
  6. 使用 GitHub 基于 dist 分支生成 pre-release 包(for bower)
  7. Fetch and checkout remote dist branch 并确认该提交的内容是即将发布的版本
  8. npm publish(npm publish,需 npm 协作者身份),如果是 pre-release 版本需要带 next tag
  9. 如有更新,在 npm 上发布各个 plugin

More Repositories

1

ChatKit-OC

此项目已经废弃,以后不再维护。我们推出了基于 Swift SDK 的 Chat Demo。
Objective-C
2,134
star
2

docs

LeanCloud Documentation
JavaScript
606
star
3

leancloud-sdk

LeanCloud SDK repository.
Objective-C
332
star
4

leantodo-weapp

LeanTodo implemented with Weapp
JavaScript
331
star
5

javascript-sdk

LeanCloud JavaScript SDK
JavaScript
330
star
6

leanmessage-demo

使用 LeanCloud 实时通讯搭建的聊天 WebApp
JavaScript
323
star
7

ticket

TypeScript
291
star
8

LeanCloudLiveKit-iOS

Show how to add IM module to Live app
Objective-C
285
star
9

satori

Satori 是一个 LeanCloud 维护的监控系统,inspired by Open-Falcon
Python
232
star
10

objc-sdk

LeanCloud Objective-C SDK
Objective-C
197
star
11

leancloud-social-ios

LeanCloud 社交登录组件,轻松加入 QQ、微博、微信登录
Objective-C
160
star
12

LeanEngine-WechatBot

该项目为微信公众平台开发指南文档所对应的代码,请参照文档进行开发,该项目不再维护
JavaScript
160
star
13

LeanStorageDemo-iOS

基于 iOS SDK,全面示例了 LeanCloud 的存储功能。
Objective-C
157
star
14

swift-sdk

LeanCloud Swift SDK
Swift
139
star
15

node-js-getting-started

LeanEngine Node.js getting started.
JavaScript
131
star
16

leanengine-nodejs-demos

云引擎 Node.js 常用功能和示例汇总
JavaScript
108
star
17

leancloud-graphql

Third party GraphQL support for LeanCloud, running on LeanEngine
JavaScript
106
star
18

python-sdk

LeanCloud Python SDK
Python
99
star
19

LeanCloudChatKit-Android

Java
96
star
20

lean-cli

LeanEngine Command Line Tool
Go
81
star
21

leancloud-feedback-ios

LeanCloud 开源的用户反馈组件
Objective-C
78
star
22

cloud-code-alipay

因支付宝接口变动频繁,该项目不再维护,代码可能无法正常工作。
JavaScript
77
star
23

LeanStorageDemo-Android

基于 Android SDK,全面示例了 LeanCloud 的存储功能
Java
71
star
24

StorageStarted

Objective-C
70
star
25

avoscloud-code-command

此版本命令行工具已经废弃,以后不再维护。我们推出了基于 Go 的新版本的命令行工具
JavaScript
66
star
26

leantodo-react-native

Todo app using LeanCloud and React Native
JavaScript
66
star
27

java-unified-sdk

LeanCloud Java SDK(兼容 Android)
Java
65
star
28

leanengine-node-sdk

LeanEngine Node.js SDK
JavaScript
62
star
29

android-push-demo

Android Push Demo ,示例 LeanCloud 的推送功能
Java
60
star
30

weapp-pay-getting-started

LeanCloud 小程序微信支付后端示例
JavaScript
59
star
31

php-sdk

LeanCloud PHP SDK
PHP
53
star
32

python-getting-started

LeanEngine Python runtime project template
Python
53
star
33

leantodo-vue

LeanTodo implemented with Vue.js
JavaScript
49
star
34

swift-sdk-demo

Demo for LeanCloud Swift SDK
Swift
49
star
35

weapp-polyfill

Polyfills for w3c API on top of Weapp API
JavaScript
46
star
36

open-old

LeanCloud Open Resources
CSS
41
star
37

android-sdk-all

Java
39
star
38

js-push-sdk

[已废弃] LeanCloud Push JavaScript SDK.
JavaScript
35
star
39

Storage-SDK-Flutter

LeanCloud Storage SDK for Flutter/Dart.
Dart
34
star
40

flask-todo-demo

Python port of LeanTodo.
HTML
31
star
41

react-native-installation-demo

Objective-C
29
star
42

Realtime-SDK-Flutter

LeanCloud Flutter Plugin SDK
Dart
26
star
43

lean-cache-demos

该项目已被归档,后续将不再维护,请在 leancloud/leanengine-nodejs-demos 中查看有关 LeanCache 的最新示例。
JavaScript
26
star
44

FlutterLeaveDemo

Flutter 请假、写周报应用
Dart
25
star
45

BallBattle-Cocos

模拟《球球大作战》demo
JavaScript
24
star
46

csharp-sdk

LeanCloud C# SDK
C#
24
star
47

leanmessage-javascript-sdk

LeanMessage JavaScript SDK
JavaScript
22
star
48

servlet-getting-started

Java
17
star
49

LeanCloudRocks

ReactNative meets LeanCloud
Objective-C
17
star
50

filter-service

A RESTFul bloom filters daemon.
Java
16
star
51

cpp-sdk

[NO MAINTAINED] LeanCloud C++ SDK
C++
16
star
52

BallBattle-Unity

《球球大作战》Demo Unity 版本
C#
16
star
53

multiplayer-turn-based-game-demo

回合制对战游戏示例
TypeScript
15
star
54

LeanCloudLiveKit-Android

Java
15
star
55

react-native-image-upload-demo

Java
14
star
56

joke

LeanCloud 中发生的一些搞笑的事情……Orz
14
star
57

realtime-messaging-signature-cloudcode

该项目已被归档,后续将不再维护,请在 leancloud/leanengine-nodejs-demos 中查看有关实时通讯签名的最新示例。
JavaScript
14
star
58

realtime-SDK-dotNET

LeanCloud Instants Messaging SDK for Portable & Unity & .NET Core written by c#
C#
13
star
59

resty-marathon-lb

基于 OpenResty 的 Marathon 服务发现 & 路由
Lua
12
star
60

spring-boot-getting-started

Java
12
star
61

go-sdk

Golang SDK for LeanCloud Storage and LeanEngine
Go
12
star
62

delphi-sdk

[NO MAINTAINED] Delphi SDK for LeanCloud BaaS demo
Pascal
12
star
63

java-sdk

Java
11
star
64

unity-sdk

Unity SDK
11
star
65

Akara

A Swift networking library based on cURL.
Swift
11
star
66

hackthon-eye

黑客马拉松项目——眼缘
JavaScript
11
star
67

django-getting-started

Python
11
star
68

mixpush-demos

Java
10
star
69

answer-game

一个答题类小游戏
JavaScript
9
star
70

leancloud-smsdemo-ios

LeanCloud SMS Demo
Objective-C
9
star
71

leanengine-nodejs-apm

LeanEngine performance monitoring for Node.js application
JavaScript
9
star
72

js-analytics-sdk

[已废弃] LeanCloud JavaScript Analytics SDK
JavaScript
9
star
73

leancloud-feedback-android

LeanCloud 开源的用户反馈组件
Java
9
star
74

ios-feedback-demo

iOS 小项目,用来展示如何快速集成 LeanCloud 反馈模块
Objective-C
8
star
75

use-resource

A set of simple utilities for declarative async resource fetching.
TypeScript
8
star
76

leanengine-java-sdk

LeanEngine Java lib
Java
8
star
77

slim-todo-demo

LeanCloud todo demo for Slim PHP Framework
HTML
8
star
78

react-hook-demo

A React hook demo with backend data store.
JavaScript
8
star
79

clj-archaius

A Clojure library designed to use Netflix/archaius for configuration management.
Clojure
7
star
80

swift-programming

Chinese Version Of Swift Programming Language
7
star
81

LeanCloudSNSDemo-Android

Android 第三方登录示例 Demo
Java
6
star
82

CSharp-SDK-Unity-Demo

CSharp SDK Unity Demo
C#
6
star
83

WeShare

Java
6
star
84

knowhow

LeanCloud 知识库 - 用户使用常见问题
Shell
6
star
85

LCLogger

Map NSLogger to LeanCloud namespace (LC)
Objective-C
5
star
86

Play-SDK-CSharp

C#
5
star
87

leancloud-status

LeanCloud Status Page
JavaScript
5
star
88

PuppetChat

Deprecated
Objective-C
5
star
89

LeanEngine-OAuth-China

该项目已被归档,后续将不再维护,请在 leancloud/leanengine-nodejs-demos 中查看云引擎的最新示例。
JavaScript
5
star
90

java-common

Java
5
star
91

affiliate-web

JavaScript
4
star
92

Swift-Sample-Code

Swift SDK 文档中的示例代码 。
Swift
4
star
93

Play-Quick-Start-JS

JavaScript
4
star
94

slim-getting-started

Slim Getting Started for LeanEngine
PHP
4
star
95

kafka-java-consumer

A Kafka consumer which can help you to overcome common pitfalls
Java
4
star
96

LeanCloudBirthday

五周年小游戏
JavaScript
4
star
97

TypeScript-Sample-Code

TypeScript SDK 文档中的示例代码
TypeScript
4
star
98

paas.product

Paas product release repo.
Objective-C
4
star
99

typed-leancloud-jssdk

Typed define for leancloud-jssdk.
TypeScript
4
star
100

leanengine-python-apm

Python
4
star