{"id":13681983,"url":"https://github.com/leancloud/leanmessage-javascript-sdk","last_synced_at":"2025-04-30T06:33:15.362Z","repository":{"id":20112437,"uuid":"23382200","full_name":"leancloud/leanmessage-javascript-sdk","owner":"leancloud","description":"LeanMessage JavaScript SDK","archived":true,"fork":false,"pushed_at":"2015-04-14T05:30:58.000Z","size":986,"stargazers_count":22,"open_issues_count":2,"forks_count":12,"subscribers_count":36,"default_branch":"master","last_synced_at":"2024-10-08T14:21:47.677Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://leancloud.cn/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/leancloud.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-08-27T08:17:45.000Z","updated_at":"2023-01-28T16:27:40.000Z","dependencies_parsed_at":"2022-07-21T19:48:38.139Z","dependency_job_id":null,"html_url":"https://github.com/leancloud/leanmessage-javascript-sdk","commit_stats":null,"previous_names":["avoscloud/realtime-messaging-jssdk"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leancloud%2Fleanmessage-javascript-sdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leancloud%2Fleanmessage-javascript-sdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leancloud%2Fleanmessage-javascript-sdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leancloud%2Fleanmessage-javascript-sdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/leancloud","download_url":"https://codeload.github.com/leancloud/leanmessage-javascript-sdk/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224177242,"owners_count":17268655,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-02T13:01:38.690Z","updated_at":"2024-11-12T01:30:48.217Z","avatar_url":"https://github.com/leancloud.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"### 该版本实时通信 SDK 为 1.x 版本，目前已经处于维护状态，如果想要使用 LeanCloud JavaScript 实时通信 SDK 请参考我们的文档 —— 「[JavaScript 实时通信开发指南](http://leancloud.cn/docs/js_realtime.html)」\n\n在使用此 SDK 之前需要先熟悉 [实时消息基础概念](https://leancloud.cn/docs/realtime.html)\n\n[查看 Changelog](https://download.avoscloud.com/sdk/jschat/changelog.txt)\n\n目前我们已经开发 [JavaScript Realtime SDK 2.0 版本](http://github.com/leancloud/js-realtime-sdk/)，欢迎试用。\n\n##  方法\n*除构造函数外，所有方法都会返回 promise ，因为都是异步执行，通过监听  `.then(successFunc, errorFunc)` 可以处理成功失败。*\n\n### `new AVChatClient(settings)`\n实例化一个 消息客户端\n\n```javascript\n\nvar chat = new AVChatClient({\n  appId: 应用 ID,\n  peerId: 当前用户的 PeerID,\n  auth: 私聊签名函数(当平台设置启动签名后，需要传递),\n  server: (非必须)，'us' 为使用美国节点,\n  sp: (非必须)，设置为 true 时可以实现 非 watch 情况下发送信息，需要 auth 签名进行相关设置\n  groupAuth: 群组聊天签名函数(当平台设置启动签名后，需要传递),\n  watchingPeerIds: (非必须)\n})\n\n```\n具体签名函数 需要类似下面的示例格式，基于 Promise 的异步操作。\n[签名函数示例](https://gist.github.com/sunchanglong/acd42f99d26b05203d6c)\n\n```javascript\nfunction auth(peerId, watchingPeerIds, sp){\n  // 参数 sp : Boolean 类型，为超级用户时为 true，即不需要 watch 即可发送信息 。\n  /*\n  return new Promise(function(resolve,reject){\n\n    // 这里放 AJAX auth code\n    resolve({\n      watchingPeerIds: AJAX 返回值\n    });\n\n  });\n  */\n  // 这里实现了一个空函数\n  return Promise.resolve({\n    watchingPeerIds: watchingPeerIds||[]\n  });\n}\nfunction groupAuth(peerId, groupId, action, groupPeerIds){\n  return Promise.resolve({\n    groupPeerIds: groupPeerIds || []\n  });\n}\n```\n\n\n### `open()`\n\n打开链接，需要先执行上面的 new 构造函数,\n\n```javascript\nchat.open().then(function(data){\n  //打开成功\n})\n```\n\n\n\n### `close()`\n\n关闭链接\n\n### `send(msg, to, transient)`\n\n发送私聊消息\n\n- `msg`：消息内容\n- `to`：发送目标 `PeerId`\n- `transient`（非必须)：为 `true` 时代表无需离线，默认为支持离线发送\n\n```javascript\nchat.send().then(function(data){\n  //success full send callback\n  },function(err){\n  //error callback\n})\n```\n\n### `watch(peers)`\n\n关注 PeerId，接受对方上下线状态。在开启签名的应用中，需要首先 watch 对方才能发送消息。\n\n- `peers`：单个 `peerId` 或数组\n\n### `unwatch(peers)`\n\n取消关注\n\n- `peers`：单个 `peerId` 或数组\n\n### `getStatus(peers)`\n\n查询 `peer` 在线或离线状态。适应于非 `watch` 情况下，即没有  `watch` 对方也能获取在线状态。\n\n- `peers`：单个 peerId 或数组\n\n### `on(name, func)`\n\n监听事件\n\n- `name`：事件名称\n- `func`：事件处理函数\n\n##  事件\n\n### `close`\n\n```javascript\nchat.on('close', function() {\n  //可以在这里进行重连 自行设置重连策略\n});\n```\n\n链接关闭\n\n### `online`\n\n上线，当关注的人上线时触发。\n\n```javascript\nchat.on('online', function(data) {\n  // 上线处理\n});\n```\n\n### `offline`\n\n下线\n\n当关注的人下线时触发\n\n### `message`\n\n收到消息时触发\n\n```javascript\nchat.on('message', function(data) {\n  // 消息处理\n});\n```\n\n## 群组方法\n\n### `joinGroup(groupId)`\n\n创建或加入群组\n\n- `groupId`：群组 ID，创建时无需传递。\n\n### `sendToGroup(msg, groupId, transient)`\n\n发送消息到指定群组\n\n- `msg`：消息内容\n- `grouipId`：群组 ID\n- `transient`（非必须)：为 `true` 时代表无需离线，默认为支持离线发送\n\n### `inviteToGroup(groupId, groupPeerIds)`\n\n邀请加入群组\n\n- `groupId`：群组 ID,\n- `groupPeerIds`：单个或数组群组 ID\n\n### `kickFromGroup(groupId, groupPeerIds)`\n\n踢出群组\n\n- `groupId`：群组 ID\n- `groupPeerIds`：单个或数组群组 ID\n\n### `leaveGroup(groupId)`\n\n离开群组\n\n- `groupId`：群组 ID\n\n## 群组事件\n\n### `membersJoined`\n\n有成员加入群\n\n### `membersLeft`\n\n有成员离开群\n\n### `joined`\n\n自己加入了群\n\n### `left`\n\n自己离开了群\n\n## 运行 Demo\n\n直接启动一个 web 服务器 即可运行 demo。\n\n### Demo 使用方法及步骤\n\n1. 您可以使用同一个浏览器的两个 tab 标签来测试，打开一个 tab，运行 demo;\n2. 首先输入一个你自定义的 peerId 比如 test123。再输入一个 watchingPeer，同样是自定义的字符串即可，比如 test234；\n3. 再点击「new Client」按钮，然后点击「open」按钮来建立服务，显示由「not connect」变为「connected」时，表示连接成功；\n4. 「Message to test234」部分，可以给 test234 发送实时消息；\n5. 打开另一个 tab，peerId 填入 test234，注意是「test234」，也就是说，这个 tab 扮演 test234 这个终端。watchingPeer 填入 test123，然后按照步骤 3 来操作，即点击「new Client」按钮，然后点击「open」按钮建立连接；\n6. 两个 tab 间可以互相收到消息。Watching Peers 下面会列出已经 watch 的 peerId 状态，绿色竖线代表「在线」。\n\n## 浏览器端环境依赖\n\n1. jQuery (非必须)  用于 jsonp 方式请求 (请求 Socket 服务器信息)，主要是针对 IE9 以下浏览器的跨域支持。如果没有 jQuery 会根据 `XMLHttpRequest` 创建 AJAX 跨域请求。\n2. es6-promise (非必须) 当需要签名认证的时候需要，是一个 Promise 接口。\n3. `./lib/flash/swfobject.js web_socket.js` (非必须) 用于跨浏览器支持 WebSocket。针对不支持 WebSocket 的浏览器。参照 \u003ca href=\"https://github.com/gimite/web-socket-js\"\u003eweb-socket-js\u003c/a\u003e\n4. `./lib/es5-shim.js` IE8 以下的浏览器需要依赖这个\n5. `./lib/json2.js`  IE7 以及以下浏览器\n\n## 浏览器端 lib 生成\n\n```javascript\nbrowserify chat.js -o  lib/av-chat.js --exclude xmlhttprequest --exclude ws -s AVChatClient\nbrowserify chat.js  --exclude xmlhttprequest --exclude ws -s AVChatClient  | uglifyjs  \u003e lib/av-chat-min.js\n```\n\n## node 环境\n\n可以单独作为一个 npm package 使用。如果有服务端需求，比如机器人发消息，这个暂时需要放在自己的服务器上。\n\n```shell\nnpm install lean-cloud-chat\n```\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleancloud%2Fleanmessage-javascript-sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fleancloud%2Fleanmessage-javascript-sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleancloud%2Fleanmessage-javascript-sdk/lists"}