WebSocket 管理器
onMessage()
推荐使用的方法。
注册一个回调函数,在收到主程序的 WebSocket 消息后执行。
类型
tsfunction onMessage( callback: (msg: {type: string, content: any}, parser: Parser) => void, options: onMessageOptions = {} ): void interface onMessageOptions { customWsServer?: string | URL }
详细信息
第一个参数传入一个回调函数,第二个参数配置
onMessage
的行为。onMessageOptions.customWsServer
属性配置自定义 WebSocket 服务器地址。如果你使用前端工具链在自建服务器上测试 HTML,这会很有帮助。INFO
该函数的本质是
WebSocketManager.getInstance()
WebSocketManager.connect()
WebSocketManager.addMessageListener()
getWebSocketURL()
等 API 的组合,并将消息 json 进行了反序列化。在当前最新版本中,我们还加入了认证机制,对于某些官方应用,它将访问我们的官方服务器以确保该应用是已被授权的。否则,所有消息将被覆盖为警告消息。这个认证机制不会影响第三方开发者的使用。
示例
jsimport { onMessage } from 'dimsum-chat' onMessage((msg, parser) => { console.log(msg) console.log(parser) })
WebSocketManager.getInstance()
获取唯一的 WebSocket 管理器实例。
类型
tsclass WebSocketManager { static getInstance(): WebSocketManager }
示例
jsimport { WebSocketManager } from 'dimsum-chat' const webSocketManager = WebSocketManager.getInstance()
WebSocketManager.connect()
连接到指定的 WebSocket 服务器。
类型
tsclass WebSocketManager { connect(url: string | URL): void; }
详细信息
参数为要连接的 WebSocket 服务器 URL。
该方法仅可以被调用一次。内部实现了自动重连方法,连接断开后将每3秒尝试重新连接。
示例
jsimport { WebSocketManager } from 'dimsum-chat' const webSocketManager = WebSocketManager.getInstance() webSocketManager.connect('ws://localhost:13499/websocket')
WebSocketManager.addMessageListener()
注册一个监听器,在 WebSocket 客户端收到消息后执行。
类型
tsclass WebSocketManager { addMessageListener(listener: (message: string) => void): void; }
详细信息
监听器接收的消息类型为 json 字符串,你需要将其反序列化后使用。
示例
jsimport { WebSocketManager } from 'dimsum-chat' const webSocketManager = WebSocketManager.getInstance() webSocketManager.connect('ws://localhost:13499/websocket') webSocketManager.addMessageListener((msg) => { let msgObj = JSON.parse(msg) console.log(msgObj) })
WebSocketManager.removeMessageListener()
移除一个已经注册的监听器。
类型
tsclass WebSocketManager { removeMessageListener(listener: (message: string) => void): void; }
示例
jswebSocketManager.removeMessageListener(listener)
getWebSocketURL()
获取当前页面对应的 WebSocket 服务器 URL ${protocol}//${host}/websocket
。
类型
tsfunction getWebSocketURL(): string;
示例
jsimport { WebSocketManager } from 'dimsum-chat' const webSocketManager = WebSocketManager.getInstance() const WebSocketURL = getWebSocketURL() // ws://localhost:13499/websocket webSocketManager.connect(WebSocketURL)
getBfaceURL()
获取加载B站头像 API 的绝对 URL。
类型
tsfunction getBfaceURL(uid: string | number): string;
示例
jsimport { getBfaceURL } from 'dimsum-chat' const bfaceURL = getBfaceURL(123456) // http://localhost:13499/bface/123456