From b03c311956befc886d140a4c795ae2863cabb6fe Mon Sep 17 00:00:00 2001 From: MiaoWoo Date: Tue, 7 Apr 2020 13:31:20 +0800 Subject: [PATCH] feat: add 1.8.8 reflect & export io namespace Signed-off-by: MiaoWoo --- packages/bukkit/src/server.ts | 3 +- packages/client/src/index.ts | 3 +- packages/websocket/src/index.ts | 45 +++++++++++++++++++++- packages/websocket/src/server/constants.ts | 6 ++- packages/websocket/src/server/index.ts | 1 + 5 files changed, 53 insertions(+), 5 deletions(-) diff --git a/packages/bukkit/src/server.ts b/packages/bukkit/src/server.ts index df90bcdc..abe502e4 100644 --- a/packages/bukkit/src/server.ts +++ b/packages/bukkit/src/server.ts @@ -5,6 +5,7 @@ import * as reflect from '@ms/common/dist/reflect' import chat from './enhance/chat' const refList: Array<{ server: string, future: string }> = [ + { server: 'aq', future: 'g' },//spigot 1.8.8 { server: 'an', future: 'g' },//spigot 1.12.2 { server: 'getServerConnection', future: 'f' },//after spigot 1.14.4 { server: 'func_147137_ag', future: 'field_151274_e' }//catserver 1.12.2 @@ -74,7 +75,7 @@ export class BukkitServer implements server.Server { } catch (error) { } } - if (!promise) { throw Error(`Can't found ServerConnection or ChannelFuture !`) } + if (!promise) { console.error("Can't found ServerConnection or ChannelFuture !"); return } this.pipeline = reflect.on(promise).get('channel').get().pipeline() } } diff --git a/packages/client/src/index.ts b/packages/client/src/index.ts index 10f0fe64..621e8b30 100644 --- a/packages/client/src/index.ts +++ b/packages/client/src/index.ts @@ -5,11 +5,12 @@ import { attachForge } from './forge' import { attachEvents } from './event' let username = process.argv[2] || 'Mr_jtb' +let version = process.argv[3] || '1.12.2' let client = createConnection('192.168.2.5', 25577, username) function createConnection(host: string, port: number, username: string) { let client = createClient({ - version: '1.12.2', + version, host, port, username, diff --git a/packages/websocket/src/index.ts b/packages/websocket/src/index.ts index 3e400609..2eb86435 100644 --- a/packages/websocket/src/index.ts +++ b/packages/websocket/src/index.ts @@ -1,3 +1,46 @@ /// -export * from './socket-io' \ No newline at end of file +import { Server, ServerOptions } from './socket-io' + +interface SocketIOStatic { + /** + * Default Server constructor + */ + (): Server; + + /** + * Creates a new Server + * @param srv The HTTP server that we're going to bind to + * @param opts An optional parameters object + */ + (srv: any, opts?: ServerOptions): Server; + + /** + * Creates a new Server + * @param port A port to bind to, as a number, or a string + * @param An optional parameters object + */ + (port: string | number, opts?: ServerOptions): Server; + + /** + * Creates a new Server + * @param A parameters object + */ + (opts: ServerOptions): Server; + + /** + * Backwards compatibility + * @see io().listen() + */ + listen?: SocketIOStatic; +} + +type SocketStatic = SocketIOStatic & { Instance?: symbol } + +// @ts-ignore +let io: SocketStatic = function (pipeline: any, options: ServerOptions) { + return new Server(pipeline, options) +} +io.Instance = Symbol("@ms/websocket") +export default io +export * from './socket-io' diff --git a/packages/websocket/src/server/constants.ts b/packages/websocket/src/server/constants.ts index bfe6d57d..ac359bad 100644 --- a/packages/websocket/src/server/constants.ts +++ b/packages/websocket/src/server/constants.ts @@ -15,6 +15,8 @@ export enum Keys { Default = "DefaultChannelPipeline" } +let RequestAttributeKey: any +try { RequestAttributeKey = AttributeKey.valueOf('request') } catch (error) { } export enum AttributeKeys { - Request = AttributeKey.valueOf('request') -} \ No newline at end of file + Request = RequestAttributeKey +} diff --git a/packages/websocket/src/server/index.ts b/packages/websocket/src/server/index.ts index ed59a8f3..96449b98 100644 --- a/packages/websocket/src/server/index.ts +++ b/packages/websocket/src/server/index.ts @@ -22,6 +22,7 @@ class NettyWebSocketServer extends EventEmitter { ctx.fireChannelRead(channel) }) connectEvent.on(ServerEvent.connect, (ctx) => { + console.log('NettyWebSocketServer ServerEvent.connect', ctx, ctx.channel().id(), ctx.channel().class.name) let nettyClient = new NettyClient(this, ctx.channel()); this.allClients[nettyClient.id] = nettyClient; this.emit(ServerEvent.connect, nettyClient);