Skip to content

dazejs/websocket-provider

Repository files navigation

GitHub issues npm npm actions codecov GitHub license

WebSocket 提供者

基于 Daze.js 的 Websocket 提供者,基于 socket.io 实现

安装

$ npm install --save @dazejs/websocket-provider

注册服务

修改项目 src/config/app.ts 文件, 添加 WebsocketServiceProviderproviders 数组中

import { WebsocketServiceProvider } from '@dazejs/websocket-provider';

export default {
  // ...
  providers: [
    // ...
    WebsocketServiceProvider,
  ]
}

使用

定义 websocket 服务

通过使用 @websock 装饰器来表示这是一个 websocket 服务

import { websock } from '@dazejs/websocket-provider';

@websock()
export class Example {

}

监听事件

通过继承 ws.subscribe() 装饰器来监听事件

import { BaseWebsocket, ws, websock } from '@dazejs/websocket-provider';

@websock()
export class Example extends BaseWebsocket {
  @ws.subscribe('event')
  handle() {
    // ...
  }
}

获取数据

使用默认注入参数获取

@ws.subscribe('event')
handle(data: any) {
  console.log(data)
}

同时也支持多个参数

@ws.subscribe('event')
handle(arg1: any, arg2: any, arg3: any) {
  console.log(arg1, arg2, arg3)
}

使用装饰器注入

使用 @ws.message() 注入单个数据

@ws.subscribe('event')
handle(@ws.message() data: any) {
  console.log(data)
}

使用 @ws.messages() 注入多个数据

@ws.subscribe('event')
handle(@ws.messages() args: any[]) {
  console.log(...args)
}

响应事件

通过 Response 对象响应事件

@ws.subscribe('event')
handle(@ws.messages() args: any[]) {
  const data = 'test'
  return this.response('event1', data)
}

也可以通过 Response 提供的方法修改事件名和参数

@ws.subscribe('event')
handle(@ws.messages() args: any[]) {
  const arg1 = 'test1';
  const arg2 = 'test2';
  return this.response().setEvent('event2').setParameters(arg1, arg2)
}

通过返回结构化的对象来响应事件

@ws.subscribe('event')
handle(@ws.messages() args: any[]) {
  return {
    event: 'event2',
    data: 'test',
  }
}

License

MIT licensed

About

websocket provider for daze.js

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published