@xrengine/server-core
Version:
Shared components for XREngine server
57 lines (50 loc) • 1.61 kB
text/typescript
// Initializes the `instance-provision` service on path `/instance-provision`
import { Application } from '../../../declarations'
import logger from '../../ServerLogger'
import { InstanceProvision } from './instance-provision.class'
import instanceProvisionDocs from './instance-provision.docs'
import hooks from './instance-provision.hooks'
// Add this service to the service type index
declare module '@xrengine/common/declarations' {
interface ServiceTypes {
'instance-provision': InstanceProvision
}
}
export default (app: Application) => {
const options = {
paginate: app.get('paginate')
}
/**
* Initialize our service with any options it requires and docs
*/
const event = new InstanceProvision(options, app)
event.docs = instanceProvisionDocs
app.use('instance-provision', event)
/**
* Get our initialized service so that we can register hooks
*/
const service: any = app.service('instance-provision')
service.hooks(hooks)
/**
* A method which is used to create instance provinsion
*
* @param data which is parsed to create instance provinsion
* @returns created instance provinsion
*/
service.publish('created', async (data): Promise<any> => {
try {
return app.channel(`userIds/${data.userId}`).send({
ipAddress: data.ipAddress,
port: data.port,
locationId: data.locationId,
sceneId: data.sceneId,
channelId: data.channelId,
channelType: data.channelType,
instanceId: data.instanceId
})
} catch (err) {
logger.error(err)
throw err
}
})
}