@@ -21,12 +21,10 @@ import {
2121import { crossPlatformServe } from "./serve" ;
2222
2323interface ServerOutput < A extends Registry < any > > {
24- config : RunConfig ;
25- driver : DriverConfig ;
24+ /** Client to communicate with the actors. */
2625 client : Client < A > ;
27- hono : Hono ;
28- handler : ( req : Request ) => Promise < Response > ;
29- serve : ( hono ?: Hono ) => void ;
26+ /** Fetch handler to manually route requests to the Rivet manager API. */
27+ fetch : ( request : Request , ...args : any ) => Response | Promise < Response > ;
3028}
3129
3230export class Registry < A extends RegistryActors > {
@@ -43,7 +41,7 @@ export class Registry<A extends RegistryActors> {
4341 /**
4442 * Runs the registry for a server.
4543 */
46- public createServer ( inputConfig ?: RunConfigInput ) : ServerOutput < this> {
44+ public start ( inputConfig ?: RunConfigInput ) : ServerOutput < this> {
4745 const config = RunConfigSchema . parse ( inputConfig ) ;
4846
4947 // Configure logger
@@ -62,6 +60,13 @@ export class Registry<A extends RegistryActors> {
6260 // TODO: Find cleaner way of disabling by default
6361 if ( driver . name === "engine" ) {
6462 config . inspector . enabled = false ;
63+ config . disableServer = true ;
64+ }
65+ if ( driver . name === "cloudflare-workers" ) {
66+ config . inspector . enabled = false ;
67+ config . disableServer = true ;
68+ config . disableActorDriver = true ;
69+ config . noWelcome = true ;
6570 }
6671
6772 // Configure getUpgradeWebSocket lazily so we can assign it in crossPlatformServe
@@ -109,41 +114,32 @@ export class Registry<A extends RegistryActors> {
109114 console . log ( ) ;
110115 }
111116
117+ // HACK: We need to find a better way to let the driver itself decide when to start the actor driver
112118 // Create runner
113119 //
114120 // Even though we do not use the return value, this is required to start the code that will handle incoming actors
115- const _actorDriver = driver . actor (
116- this . #config,
117- config ,
118- managerDriver ,
119- client ,
120- ) ;
121+ if ( ! config . disableActorDriver ) {
122+ const _actorDriver = driver . actor (
123+ this . #config,
124+ config ,
125+ managerDriver ,
126+ client ,
127+ ) ;
128+ }
129+
130+ // Start server
131+ if ( ! config . disableServer ) {
132+ ( async ( ) => {
133+ const out = await crossPlatformServe ( hono , undefined ) ;
134+ upgradeWebSocket = out . upgradeWebSocket ;
135+ } ) ( ) ;
136+ }
121137
122138 return {
123- config,
124- driver,
125139 client,
126- hono,
127- handler : async ( req : Request ) => await hono . fetch ( req ) ,
128- serve : async ( app ) => {
129- const out = await crossPlatformServe ( hono , app ) ;
130- upgradeWebSocket = out . upgradeWebSocket ;
131- } ,
140+ fetch : hono . fetch . bind ( hono ) ,
132141 } ;
133142 }
134-
135- /**
136- * Runs the registry as a standalone server.
137- */
138- public async runServer ( inputConfig ?: RunConfigInput ) {
139- const { driver, serve } = this . createServer ( inputConfig ) ;
140-
141- // TODO: FInd better way of doing this
142- // Don't run server by default
143- if ( driver . name !== "engine" ) {
144- serve ( ) ;
145- }
146- }
147143}
148144
149145export function setup < A extends RegistryActors > (
0 commit comments