UNPKG

awesome-im

Version:

Lightweight, extensible, JavaScript Instant Messaging.

118 lines (108 loc) 2.76 kB
export const MessageType = { /** * 文本消息 */ TEXT: "TxtMsg", /** * 图片消息 */ IMAGE: "ImgMsg", FILE: "FileMsg", /** * ping 消息,用于判断客户端是否连接服务端。 */ PING: "PingMsg", /** * 信令消息(用于客户端与服务端的交互信令) */ SIGNAL: "SignalMsg" } export const ConversationType = { /** * 客户端与服务端的会话 */ SERVER: 0, /** * 单聊 */ PRIVATE: 1, /** * 讨论组 */ DISCUSSION: 2, /** * 群组聊天 */ GROUP: 3, /** * 聊天室会话 */ CHATROOM: 4, /** * 系统消息 */ SYSTEM: 5, } export const MessageDirection = { /** * 发送消息。 */ SEND: 1, /** * 接收消息。 */ RECEIVE: 2 } export default class MessageModel { constructor(messageData) { const { messageType, conversationType, message, extra, from, to, messageUId, messageId } = messageData; const Message = { "messageDirection": MessageDirection.SEND, "messageType": messageType || MessageType.TEXT, "sentTime": new Date().getTime(), "messageUId": messageUId, "messageId": messageId, "conversationType": conversationType || ConversationType.SERVER, } if (message) { Message.content = { message, extra: extra || null } } from && (Message.from = from); to && (Message.to = to); return Message; } } export class TextMessage extends MessageModel { constructor(messageData) { const Message = super(messageData) Message.messageType = MessageType.TEXT return Message; } } export class ImageMessage extends MessageModel { constructor(messageData) { const Message = super(messageData) Message.messageType = MessageType.IMAGE return Message; } } export class PingMessage extends MessageModel { constructor(messageData) { const Message = super(messageData) Message.messageType = MessageType.PING Message.conversationType = ConversationType.SERVER; return Message; } } export class SignalMessage extends MessageModel { constructor(messageData) { const Message = super(messageData) Message.messageType = MessageType.SIGNAL; Message.signalName = messageData.signalName; Message.conversationType = ConversationType.SERVER; return Message; } }