# im-sdk-ts

> IM即时消息SDK 基于websocket和ts

Latest version **0.1.46** (published 2020-06-08) · MIT license · 0 weekly downloads

> **Deprecated.** This package is deprecated.

## Install

```sh
npm install im-sdk-ts
pnpm add im-sdk-ts
yarn add im-sdk-ts
bun add im-sdk-ts
```

## Health

**Score 10/100 (F)** — status: deprecated.

Negative: deprecated.

## Facts

| | |
|---|---|
| Version | 0.1.46 |
| Published | 2020-06-08 |
| First published | 2020-04-15 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Node | >=10 |
| Dependencies | 5 |
| Unpacked size | 3.1 MB |
| Known vulnerabilities | 0 (+11 in 2 direct dependencies) |
| Install scripts | no |
| Author | sdy |
| Maintainers | bestlbw, wuyangwang |

## Links

- npm: https://www.npmjs.com/package/im-sdk-ts
- npm.io page: https://npm.io/package/im-sdk-ts

## Dependencies (5)

- [ws](https://npm.io/package/ws.md) ^7.3.0
- [uuid](https://npm.io/package/uuid.md) ^7.0.3
- [log4js](https://npm.io/package/log4js.md) ^6.3.0
- [protobufjs](https://npm.io/package/protobufjs.md) ^6.9.0
- [@types/uuid](https://npm.io/package/@types/uuid.md) ^7.0.2

## Recent versions

- 0.1.46 (latest) — 2020-06-08
- 0.1.45 — 2020-06-08
- 0.1.44 — 2020-06-06
- 0.1.43 — 2020-06-02
- 0.1.42 — 2020-06-01
- 0.1.41 — 2020-06-01
- 0.1.40 — 2020-06-01
- 0.1.39 — 2020-05-29
- 0.1.38 — 2020-05-29
- 0.1.37 — 2020-05-27
- 0.1.36 — 2020-05-27
- 0.1.35 — 2020-05-27
- 0.1.34 — 2020-05-26
- 0.1.33 — 2020-05-26
- 0.1.32 — 2020-05-26
- … 26 more at https://npm.io/package/im-sdk-ts/versions

## README

# IM sdk （有消息前端IM部分SDK）

## 主要功能

- 连接远程 websocket 服务器并监听
- 用户连接成功/失败的回调
- 发送/接收消息
- 开启或关闭日志
- 主动断开连接(不重连)
- 连接断开或错误 自动重连
  - 重连最多 3 次 重连间隔 3s
  - 重连成功/失败的回调
- 也可手动重连
- 与服务器端的心跳保持 间隔 1 分钟
- 账号在其他地方登录（如 APP）的回调
- 网络变化（如断线、重新连接）的回调
- 发送/接收消息时的类型定义常量

## 本地环境

- node版本建议大于10.0
- typescript版本建议大于3.7

注：**编辑器需要安装eslint、prettier等常用格式化工具**

## 命令

- 本地开发 `npm start`
- 打包 `npm run build`

## Usage 使用

```js
import { imConnect, imEventInstance, WebsocketEvent } from 'im-sdk-ts';

// 获取IM实例
const im = imConnect(url, {loginUserId: 'xx', loginToken: 'xx'});
// 获取IM事件订阅器实例
const imEvent = imEventInstance();
im.setDebugEnable(true);
im.setDebugPingPongEnable(false);

imEvent.socketOn(WebsocketEvent.EVENT_LOG, content => {
  console.log(content);
});
imEvent.socketOn(WebsocketEvent.EVENT_RECONNECT_SUCCESS, () => {
  console.log('掉线重连成功了');
});

// 建立连接
im.connectAndListen()
// 发送单聊
im.send121Msg(msg)
// 断开连接
im.disconnect()
```

## Example

详细例子见：`examples/src/pages/index.tsx`

onIMData 消息回调的详细文档 见[消息文档](message.md)

### ImSdk实例方法

| 实例方法           |                            说明 |
| :---------------------------- |  -------------------------------: |
| setDebugEnable                |                        是否打印日志 |
| setDebugPingPongEnable        |                    是否打印心跳日志 |
| connectAndListen              |    连接服务器，监听 socket 连接状态 |
| send121Msg                      |                    发送单聊信息 |
| sendGroupMsg                      |                    发送群聊信息 |
| disconnect              |           主动断开连接 不会自动重连 |
| tryReconnect                  |                        手动尝试重连 |
| isUserLogined                 |     用户是否已登录 不管以后是否掉线 |
| isUserOnline                  |                        用户是否在线 |
| getLoginInfo                  |                获取用户授权时的信息 |

## 发布

执行`npm publish`

## 参考

脚手架

- <https://github.com/jaredpalmer/tsdx>
- <https://github.com/jsynowiec/node-typescript-boilerplate>

## feature

* Package webSocket and define Porotocal that equal server side
* Written in TypeScript with predictable static types.
* Provide some function change environment variable for debug,etc: setDebugEnable(),setDebugPingPongEnable().
* Use JEST for unit testing

---
_Source: https://npm.io/package/im-sdk-ts · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
