Skip to content

Latest commit

 

History

History

ws

@wcferry/ws

A Wcferry websocket server

websocket

Usage

Standalone

Start a standalone websocket server at 8000:

await WcfWSServer.start({ port: 8000 });

Attach to existing Wcferry instance

const wcferry = new Wcferry();
new WcfWSServer(wcferry, { port: 8000 });
// impl your bot logic ...

Message definiton

General commands:

interface Command {
    id: number; // message unique id (server will response the command with the same id)
    method: string; // the allowed method name, to invoke wcferry.[method](...params)
    params?: any[]; // the parameters of the method call
}

methods and params are same as methods in @wcferry/core

All the supported commands:

[
    'acceptNewFriend',
    'addChatRoomMembers',
    'dbSqlQuery',
    'decryptImage',
    'delChatRoomMembers',
    'downloadAttach',
    'downloadImage',
    'forwardMsg',
    'getAliasInChatRoom',
    'getAudioMsg',
    'getChatRoomMembers',
    'getChatRooms',
    'getContact',
    'getContacts',
    'getDbNames',
    'getFriends',
    'getMsgTypes',
    'getOCRResult',
    'getSelfWxid',
    'getUserInfo',
    'inviteChatroomMembers',
    'isLogin',
    'receiveTransfer',
    'refreshPyq',
    'revokeMsg',
    'sendFile',
    'sendImage',
    'sendPat',
    'sendRichText',
    'sendTxt',
];

Special commands

Following commands can control whether receving messages including pyq messages:

// enable receiving message:
interface EnableMessage {
    id: number;
    method: 'message.enable';
}

// disable receiving message:
interface DisableMessage {
    id: number;
    method: 'message.disable';
}

// set if receiving pyq message:
interface SetRecvPyq {
    id: number;
    method: 'recvPyq';
    params: [boolean];
}

Server response

Command response

  1. ok:
interface OKResp {
    id: number;
    result: any;
}
  1. error:
interface ErrorResp {
    id: number;
    error: { message: string; code?: number };
}

Message response

Once we enable receiving message, the websocket server will start to push the chat messages back:

interface Message {
    type: 'message';
    data: WxMsg;
}

Building

Run nx build ws to build the library.

Running unit tests

Run nx test ws to execute the unit tests via Vitest.