@@ -4,10 +4,7 @@ import { ServerEvent, Keys } from './constants'
|
||||
import { WebSocketDetect } from './websocket_detect'
|
||||
import { WebSocketHandler } from './websocket_handler'
|
||||
import { NettyClient } from './client'
|
||||
|
||||
interface NettyWebSocketServerOptions {
|
||||
path?: string;
|
||||
}
|
||||
import { NettyWebSocketServerOptions } from './config'
|
||||
|
||||
class NettyWebSocketServer {
|
||||
private event: EventEmitter
|
||||
@@ -18,20 +15,20 @@ class NettyWebSocketServer {
|
||||
this.event = new EventEmitter();
|
||||
this.allClients = {};
|
||||
this.pipeline = pipeline;
|
||||
let connectEvent = new EventEmitter();
|
||||
let connectEvent = options.event;
|
||||
this.pipeline.addFirst(Keys.Detect, new WebSocketDetect(connectEvent).getHandler())
|
||||
connectEvent.on(ServerEvent.detect, (ctx, channel) => {
|
||||
channel.pipeline().addFirst(Keys.Handler, new WebSocketHandler(connectEvent).getHandler())
|
||||
channel.pipeline().addFirst(Keys.Handler, new WebSocketHandler(options).getHandler())
|
||||
ctx.fireChannelRead(channel)
|
||||
})
|
||||
connectEvent.on(ServerEvent.connect, (ctx) => {
|
||||
let nettyClient = new NettyClient(ctx.channel());
|
||||
let nettyClient = new NettyClient(this, ctx.channel());
|
||||
this.allClients[nettyClient.id] = nettyClient;
|
||||
this.event.emit(ServerEvent.connect, nettyClient);
|
||||
})
|
||||
connectEvent.on(ServerEvent.message, (ctx, msg) => {
|
||||
let channel = ctx.channel();
|
||||
this.allClients[channel.id()]?.emit(ServerEvent.message, msg.text())
|
||||
this.event.emit(ServerEvent.message, this.allClients[channel.id()], msg.text())
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user