WebSocket Server Not Sending "Connected" Message

hey 👋 I'm trying to create a simple Websocket server sending a response "Connected" after a client connected.

For some reason I never get to this line: yield* Effect.logInfo('Connected sent');
What am I am doing wrong?

import { type Socket, SocketServer } from '@effect/platform';
import { NodeContext, NodeRuntime, NodeSocketServer } from '@effect/platform-node';
import { Effect } from 'effect';

// Connection handler
const handleConnection = Effect.fn('handleConnection')(function* (socket: Socket.Socket) {
  yield* Effect.logInfo('New connection');

  const sendToSocket = yield* socket.writer;
  yield* sendToSocket('Connected');
  yield* Effect.logInfo('Connected sent');

  return yield* Effect.never;
});

// Server setup
NodeRuntime.runMain(
  Effect.gen(function* () {
    const server = yield* SocketServer.SocketServer;

    yield* Effect.logInfo('Chat server starting on port 8080');
    yield* server.run(handleConnection);
  }).pipe(
    Effect.scoped,
    Effect.provide(NodeContext.layer),
    Effect.provide(
      NodeSocketServer.layerWebSocket({
        port: 8080,
      }),
    ),
  ),
);
Was this page helpful?