chore(example) introduce changes to example implementation
This commit is contained in:
@@ -4,18 +4,18 @@ export default class WetSockClient {
|
|||||||
this.listeners = new Map();
|
this.listeners = new Map();
|
||||||
this.plugins = new Map();
|
this.plugins = new Map();
|
||||||
|
|
||||||
this.socket.onopen = () => {
|
this.socket.addEventListener('open', () => {
|
||||||
console.log('Connected to WetSock server');
|
console.log('Connected to WetSock server');
|
||||||
};
|
});
|
||||||
|
|
||||||
this.socket.onmessage = (event) => {
|
this.socket.addEventListener('message', (event) => {
|
||||||
const message = JSON.parse(event.data);
|
const message = JSON.parse(event.data);
|
||||||
this.handleMessage(message);
|
this.handleMessage(message);
|
||||||
};
|
});
|
||||||
|
|
||||||
this.socket.onclose = () => {
|
this.socket.addEventListener('close', () => {
|
||||||
console.log('Disconnected from WetSock server');
|
console.log('Disconnected from WetSock server');
|
||||||
};
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
on(event, callback) {
|
on(event, callback) {
|
||||||
@@ -33,13 +33,14 @@ export default class WetSockClient {
|
|||||||
}
|
}
|
||||||
|
|
||||||
handleMessage(message) {
|
handleMessage(message) {
|
||||||
const { event, ...data } = message;
|
this.emit('message', message);
|
||||||
|
const { event, data, ...rest } = message;
|
||||||
if (event === 'pluginList') {
|
switch (event) {
|
||||||
this.updatePlugins(data.plugins);
|
case 'plugins':
|
||||||
} else {
|
this.updatePlugins(data);
|
||||||
this.emit(event, data);
|
break;
|
||||||
}
|
}
|
||||||
|
this.emit(event, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
updatePlugins(plugins) {
|
updatePlugins(plugins) {
|
||||||
@@ -49,34 +50,15 @@ export default class WetSockClient {
|
|||||||
}
|
}
|
||||||
|
|
||||||
send(message) {
|
send(message) {
|
||||||
|
if(typeof(message) != 'string') throw new TypeError('message needs to be a string');
|
||||||
|
if(message.startsWith('/')) {
|
||||||
|
const [command, ...rest] = message.split(' ');
|
||||||
|
|
||||||
|
message = {
|
||||||
|
action: command.substring(1),
|
||||||
|
message: rest.join(' ')
|
||||||
|
}
|
||||||
|
}
|
||||||
this.socket.send(JSON.stringify(message));
|
this.socket.send(JSON.stringify(message));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Generic methods for interacting with plugins
|
|
||||||
createEntity(pluginIdentifier, entityData) {
|
|
||||||
this.send({ action: 'create', pluginIdentifier, data: entityData });
|
|
||||||
}
|
|
||||||
|
|
||||||
performAction(pluginIdentifier, entityId, actionName, ...args) {
|
|
||||||
this.send({ action: 'perform', pluginIdentifier, entityId, data: { actionName, args } });
|
|
||||||
}
|
|
||||||
|
|
||||||
// Helper methods for common actions
|
|
||||||
joinRoom(roomId) {
|
|
||||||
this.performAction('room', roomId, 'join');
|
|
||||||
}
|
|
||||||
|
|
||||||
leaveRoom(roomId) {
|
|
||||||
this.performAction('room', roomId, 'leave');
|
|
||||||
}
|
|
||||||
|
|
||||||
sendMessageToRoom(roomId, message) {
|
|
||||||
this.performAction('room', roomId, 'sendMessage', message);
|
|
||||||
}
|
|
||||||
|
|
||||||
createTask(taskData) {
|
|
||||||
this.createEntity('task', taskData);
|
|
||||||
}
|
|
||||||
|
|
||||||
// ... other helper methods ...
|
|
||||||
}
|
}
|
||||||
|
|||||||
20
lib/index.js
20
lib/index.js
@@ -1,24 +1,28 @@
|
|||||||
import { resolve } from 'path';
|
import { resolve } from 'path';
|
||||||
|
|
||||||
import WetSock from './WetSock';
|
import WetSock from './WetSock';
|
||||||
|
import RoomPlugin from './WetSock/Plugins/Rooms/RoomPlugin';
|
||||||
|
|
||||||
const wetsock = new WetSock();
|
const wetsock = new WetSock();
|
||||||
|
|
||||||
|
const rooms = new RoomPlugin();
|
||||||
|
|
||||||
|
wetsock.registerPlugin('rooms', rooms);
|
||||||
|
|
||||||
const server = Bun.serve({
|
const server = Bun.serve({
|
||||||
port: process.env.APP_PORT || 43_069,
|
port: process.env.APP_PORT || 3_000,
|
||||||
fetch(req, server) {
|
async fetch(req, server) {
|
||||||
const url = new URL(req.url);
|
const url = new URL(req.url);
|
||||||
if(url.pathname == '/chat') return wetsock.handleUpgrade(req, server);
|
if(url.pathname == '/chat') return wetsock.handleUpgrade(req, server);
|
||||||
|
|
||||||
|
let filePath = resolve(__dirname, 'WetSock', 'Client', 'Assets', 'index.html');
|
||||||
if(url.pathname == '/client.js') {
|
if(url.pathname == '/client.js') {
|
||||||
const filePath = resolve(__dirname, 'WetSock', 'Client', 'Client.js');
|
filePath = resolve(__dirname, 'WetSock', 'Client', 'Client.js');
|
||||||
const file = Bun.file(filePath);
|
|
||||||
return new Response(file);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const filePath = resolve(__dirname, 'views', 'index.html');
|
|
||||||
const file = Bun.file(filePath);
|
const file = Bun.file(filePath);
|
||||||
|
if(!(await file.exists())) {
|
||||||
|
return new Response('Not found', {status: 404});
|
||||||
|
}
|
||||||
return new Response(file);
|
return new Response(file);
|
||||||
},
|
},
|
||||||
websocket: {
|
websocket: {
|
||||||
|
|||||||
Reference in New Issue
Block a user