refactor: packets
This commit is contained in:
parent
c3b5ae2b64
commit
8fe81e20f1
|
@ -7,7 +7,13 @@ export default {
|
|||
hooks: {
|
||||
'@latus/http/client/up': (latus) => {
|
||||
// eslint-disable-next-line no-param-reassign
|
||||
latus.config['%packets'] = gather(latus, '@latus/socket/packets', 'id', badPacketsCheck);
|
||||
latus.config['%packets'] = gather(
|
||||
latus,
|
||||
'@latus/socket/packets',
|
||||
'id',
|
||||
'name',
|
||||
badPacketsCheck,
|
||||
);
|
||||
const socket = new SocketClient(latus);
|
||||
socket.on('packet', (packet) => {
|
||||
if ('Refresh' === packet.constructor.name) {
|
||||
|
|
|
@ -5,6 +5,7 @@ import io from 'socket.io-client';
|
|||
|
||||
import {Class, compose, EventEmitter} from '@latus/core';
|
||||
|
||||
import normalize from '../normalize';
|
||||
import {fromName} from '../packet/packets';
|
||||
import SocketIoParser from '../packet/socket.io-parser';
|
||||
|
||||
|
@ -85,22 +86,12 @@ export default class SocketClient extends decorate(Class) {
|
|||
this.socket.disconnect();
|
||||
}
|
||||
|
||||
static hydrate(latus, [type, data]) {
|
||||
const Packets = fromName(latus);
|
||||
if (!Packets[type]) {
|
||||
throw new TypeError(`No packet of type '${type}'`);
|
||||
}
|
||||
return new Packets[type](data);
|
||||
}
|
||||
|
||||
get id() {
|
||||
return this.socket ? this.socket.id : undefined;
|
||||
}
|
||||
|
||||
static send(latus, socket, packetOrDehydrated, method) {
|
||||
const packet = Array.isArray(packetOrDehydrated)
|
||||
? this.hydrate(latus, packetOrDehydrated)
|
||||
: packetOrDehydrated;
|
||||
const packet = normalize(latus, packetOrDehydrated);
|
||||
debug('sending packet %o', packet);
|
||||
const {id} = packet.constructor;
|
||||
return socket[method](id, packet.data);
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
import Bundle from './packet/bundle';
|
||||
import Refresh from './packet/refresh';
|
||||
|
||||
export * from './hooks';
|
||||
|
||||
export {default as normalize} from './normalize';
|
||||
export {default as Packet, ValidationError} from './packet';
|
||||
export {fromId as packetFromId, fromName as packetFromName} from './packet/packets';
|
||||
|
||||
export default {
|
||||
hooks: {
|
||||
|
@ -11,7 +14,8 @@ export default {
|
|||
connect: [],
|
||||
}),
|
||||
'@latus/socket/packets': (latus) => ({
|
||||
Refresh: Refresh(latus),
|
||||
Bundle: Bundle(latus),
|
||||
Refresh,
|
||||
}),
|
||||
},
|
||||
};
|
||||
|
|
15
packages/socket/src/normalize.js
Normal file
15
packages/socket/src/normalize.js
Normal file
|
@ -0,0 +1,15 @@
|
|||
import {fromName} from './packet/packets';
|
||||
|
||||
const hydrate = (latus, [type, data]) => {
|
||||
const Packets = fromName(latus);
|
||||
if (!Packets[type]) {
|
||||
throw new TypeError(`No packet of type '${type}'`);
|
||||
}
|
||||
return new Packets[type](data);
|
||||
};
|
||||
|
||||
export default (latus, packetOrDehydrated) => (
|
||||
Array.isArray(packetOrDehydrated)
|
||||
? hydrate(latus, packetOrDehydrated)
|
||||
: packetOrDehydrated
|
||||
);
|
|
@ -1,3 +1,3 @@
|
|||
import Packet from './packet';
|
||||
|
||||
export default () => class Refresh extends Packet {};
|
||||
export default class Refresh extends Packet {}
|
||||
|
|
|
@ -12,7 +12,13 @@ export default {
|
|||
hooks: {
|
||||
'@latus/http/server/up': async (httpServer, latus) => {
|
||||
// eslint-disable-next-line no-param-reassign
|
||||
latus.config['%packets'] = gather(latus, '@latus/socket/packets', 'id', badPacketsCheck);
|
||||
latus.config['%packets'] = gather(
|
||||
latus,
|
||||
'@latus/socket/packets',
|
||||
'id',
|
||||
'name',
|
||||
badPacketsCheck,
|
||||
);
|
||||
createSocketServer(httpServer, latus);
|
||||
},
|
||||
'@latus/repl/context': (latus) => ({
|
||||
|
|
|
@ -3,6 +3,7 @@ import {promisify} from 'util';
|
|||
import {Class, compose, EventEmitter} from '@latus/core';
|
||||
import D from 'debug';
|
||||
|
||||
import normalize from './normalize';
|
||||
import {fromName} from './packet/packets';
|
||||
|
||||
const debug = D('@latus/socket/server/socket');
|
||||
|
@ -44,14 +45,6 @@ export default class ServerSocket extends decorate(Class) {
|
|||
this.socket.disconnect(true);
|
||||
}
|
||||
|
||||
static hydrate(latus, [type, data]) {
|
||||
const Packets = fromName(latus);
|
||||
if (!Packets[type]) {
|
||||
throw new TypeError(`No packet of type '${type}'`);
|
||||
}
|
||||
return new Packets[type](data);
|
||||
}
|
||||
|
||||
get id() {
|
||||
return this.socket.id;
|
||||
}
|
||||
|
@ -73,9 +66,7 @@ export default class ServerSocket extends decorate(Class) {
|
|||
}
|
||||
|
||||
static send(latus, socket, packetOrDehydrated, method) {
|
||||
const packet = Array.isArray(packetOrDehydrated)
|
||||
? this.hydrate(latus, packetOrDehydrated)
|
||||
: packetOrDehydrated;
|
||||
const packet = normalize(latus, packetOrDehydrated);
|
||||
debug('sending packet %s(%o)', packet.constructor.name, packet.data);
|
||||
const {id} = packet.constructor;
|
||||
return socket[method](id, packet.data);
|
||||
|
|
Loading…
Reference in New Issue
Block a user