avocado-old/packages/client/socket.js
2019-04-12 00:09:25 -05:00

36 lines
791 B
JavaScript

import {EventEmitter} from 'events';
import io from 'socket.io-client';
import {SocketIoParser, allPackets, idFromPacket} from '@avocado/packet';
class SocketClient extends EventEmitter {
constructor(address) {
super();
this.socket = io(address, {
parser: SocketIoParser,
path: '/avocado',
perMessageDeflate: false,
});
this.socket.on('connect', () => {
this.emit('connect');
});
for (const Packet of allPackets()) {
const id = idFromPacket(Packet);
this.socket.on(id, (packet) => {
this.emit('packet', packet);
});
}
}
send(packet) {
const id = idFromPacket(packet.constructor);
this.socket.emit(id, packet.data);
}
}
export function create(address) {
return new SocketClient(address);
}