File tree Expand file tree Collapse file tree 8 files changed +140
-1
lines changed Expand file tree Collapse file tree 8 files changed +140
-1
lines changed Original file line number Diff line number Diff line change 1+ # @dobsjs/websocket
2+
3+ Simplest WebSocket Plugin for [ dobs] ( https://dobs.vercel.app )
4+
5+ ## Usage
6+
7+ ``` ts
8+ import { websocket } from ' @dobsjs/websocket' ;
9+ import { defineConfig } from ' dobs' ;
10+
11+ export default defineConfig ({
12+ plugins: [
13+ websocket ({
14+ open(ws ) {
15+ console .log (' [ws] connected' );
16+ },
17+ message(ws , message ) {
18+ console .log (' [ws] message ' + message .toString ());
19+ },
20+ }),
21+ ],
22+ });
23+ ```
Original file line number Diff line number Diff line change 1+ {
2+ "name" : " @dobsjs/websocket" ,
3+ "version" : " 0.1.0-beta.2" ,
4+ "main" : " ./dist/index.js" ,
5+ "module" : " ./dist/index.mjs" ,
6+ "types" : " ./dist/index.d.ts" ,
7+ "repository" : " https://github.com/zely-js/dobs" ,
8+ "description" : " WebSocket for dobs" ,
9+ "files" : [
10+ " dist"
11+ ],
12+ "exports" : {
13+ "." : {
14+ "import" : {
15+ "types" : " ./dist/index.d.mts" ,
16+ "default" : " ./dist/index.mjs"
17+ },
18+ "require" : {
19+ "types" : " ./dist/index.d.ts" ,
20+ "default" : " ./dist/index.js"
21+ }
22+ }
23+ },
24+ "dependencies" : {
25+ "ws" : " ^8.18.3"
26+ },
27+ "devDependencies" : {
28+ "@types/ws" : " ^8"
29+ }
30+ }
Original file line number Diff line number Diff line change 1+ import WebSocket , { WebSocketServer } from 'ws' ;
2+ import type { Plugin } from 'dobs' ;
3+ import type { Promisable } from '~/dobs/_types' ;
4+
5+ export interface WebSocketOptions {
6+ open ?( ws : WebSocket ) : Promisable < void > ;
7+ message ?( ws : WebSocket , data : WebSocket . RawData ) : Promisable < void > ;
8+ error ?( err : Error ) : Promisable < void > ;
9+ }
10+
11+ export function websocket ( websocketOptions : WebSocketOptions ) : Plugin {
12+ return {
13+ name : '@dobsjs/websocket' ,
14+
15+ server ( server ) {
16+ const wss = new WebSocketServer ( { server : server . server } ) ;
17+
18+ wss . on ( 'connection' , async ( ws ) => {
19+ if ( websocketOptions ?. open ) await websocketOptions . open ( ws ) ;
20+
21+ ws . on ( 'message' , async ( data ) => {
22+ if ( websocketOptions ?. message ) await websocketOptions . message ( ws , data ) ;
23+ } ) ;
24+
25+ ws . on ( 'error' , async ( err ) => {
26+ if ( websocketOptions ?. error ) await websocketOptions . error ( err ) ;
27+ } ) ;
28+ } ) ;
29+ } ,
30+ } ;
31+ }
Original file line number Diff line number Diff line change 1+ import { defineConfig } from 'tsdown' ;
2+
3+ export default defineConfig ( {
4+ entry : './src/index.ts' ,
5+ platform : 'node' ,
6+ format : [ 'cjs' , 'esm' ] ,
7+ } ) ;
Original file line number Diff line number Diff line change @@ -3,3 +3,4 @@ export * from './config';
33export * from './types' ;
44export * from './builder' ;
55export * from './defineRoutes' ;
6+ export type { Plugin , ErrorContext } from './plugin' ;
Original file line number Diff line number Diff line change 1+ import { websocket } from '@dobsjs/websocket' ;
2+
13import { cachePlugin } from 'dobs/experimental' ;
24
35export default {
46 port : 3000 ,
5- plugins : [ cachePlugin ( { ttl : 1000 } ) ] ,
7+ plugins : [
8+ cachePlugin ( { ttl : 1000 } ) ,
9+ websocket ( {
10+ open ( ws ) {
11+ console . log ( '[ws] connected' ) ;
12+ } ,
13+ message ( ws , message ) {
14+ console . log ( '[ws] message ' + message . toString ( ) ) ;
15+ } ,
16+ } ) ,
17+ ] ,
618} satisfies import ( 'dobs' ) . ServerConfig ;
Original file line number Diff line number Diff line change 33 "version" : " 0.0.1-alpha.2" ,
44 "private" : true ,
55 "dependencies" : {
6+ "@dobsjs/websocket" : " workspace:*" ,
67 "dobs" : " workspace:*"
78 },
89 "scripts" : {
Original file line number Diff line number Diff line change @@ -113,6 +113,15 @@ __metadata:
113113 languageName : unknown
114114 linkType : soft
115115
116+ " @dobsjs/websocket@workspace:*, @dobsjs/websocket@workspace:packages/dobs-ws " :
117+ version : 0.0.0-use.local
118+ resolution : " @dobsjs/websocket@workspace:packages/dobs-ws"
119+ dependencies :
120+ " @types/ws " : " npm:^8"
121+ ws : " npm:^8.18.3"
122+ languageName : unknown
123+ linkType : soft
124+
116125" @emnapi/core@npm:^1.4.3, @emnapi/core@npm:^1.5.0 " :
117126 version : 1.7.0
118127 resolution : " @emnapi/core@npm:1.7.0"
@@ -1535,6 +1544,7 @@ __metadata:
15351544 version : 0.0.0-use.local
15361545 resolution : " @playgrounds/default@workspace:playgrounds/default"
15371546 dependencies :
1547+ " @dobsjs/websocket " : " workspace:*"
15381548 dobs : " workspace:*"
15391549 languageName : unknown
15401550 linkType : soft
@@ -2328,6 +2338,15 @@ __metadata:
23282338 languageName : node
23292339 linkType : hard
23302340
2341+ " @types/ws@npm:^8 " :
2342+ version : 8.18.1
2343+ resolution : " @types/ws@npm:8.18.1"
2344+ dependencies :
2345+ " @types/node " : " npm:*"
2346+ checksum : 10c0/61aff1129143fcc4312f083bc9e9e168aa3026b7dd6e70796276dcfb2c8211c4292603f9c4864fae702f2ed86e4abd4d38aa421831c2fd7f856c931a481afbab
2347+ languageName : node
2348+ linkType : hard
2349+
23312350" @typescript-eslint/eslint-plugin@npm:8.46.3 " :
23322351 version : 8.46.3
23332352 resolution : " @typescript-eslint/eslint-plugin@npm:8.46.3"
@@ -8059,6 +8078,21 @@ __metadata:
80598078 languageName : node
80608079 linkType : hard
80618080
8081+ " ws@npm:^8.18.3 " :
8082+ version : 8.18.3
8083+ resolution : " ws@npm:8.18.3"
8084+ peerDependencies :
8085+ bufferutil : ^4.0.1
8086+ utf-8-validate : " >=5.0.2"
8087+ peerDependenciesMeta :
8088+ bufferutil :
8089+ optional : true
8090+ utf-8-validate :
8091+ optional : true
8092+ checksum : 10c0/eac918213de265ef7cb3d4ca348b891a51a520d839aa51cdb8ca93d4fa7ff9f6ccb339ccee89e4075324097f0a55157c89fa3f7147bde9d8d7e90335dc087b53
8093+ languageName : node
8094+ linkType : hard
8095+
80628096" y18n@npm:^5.0.5 " :
80638097 version : 5.0.8
80648098 resolution : " y18n@npm:5.0.8"
You can’t perform that action at this time.
0 commit comments