MCPcopy Index your code
hub / github.com/codeaashu/claude-code / WebSocketTransport

Class WebSocketTransport

src/utils/mcpWebSocketTransport.ts:22–200  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

20}
21
22export class WebSocketTransport implements Transport {
23 private started = false
24 private opened: Promise<void>
25 private isBun = typeof Bun !== 'undefined'
26
27 constructor(private ws: WebSocketLike) {
28 this.opened = new Promise((resolve, reject) => {
29 if (this.ws.readyState === WS_OPEN) {
30 resolve()
31 } else if (this.isBun) {
32 const nws = this.ws as unknown as globalThis.WebSocket
33 const onOpen = () => {
34 nws.removeEventListener('open', onOpen)
35 nws.removeEventListener('error', onError)
36 resolve()
37 }
38 const onError = (event: Event) => {
39 nws.removeEventListener('open', onOpen)
40 nws.removeEventListener('error', onError)
41 logForDiagnosticsNoPII('error', 'mcp_websocket_connect_fail')
42 reject(event)
43 }
44 nws.addEventListener('open', onOpen)
45 nws.addEventListener('error', onError)
46 } else {
47 const nws = this.ws as unknown as WsWebSocket
48 nws.on('open', () => {
49 resolve()
50 })
51 nws.on('error', error => {
52 logForDiagnosticsNoPII('error', 'mcp_websocket_connect_fail')
53 reject(error)
54 })
55 }
56 })
57
58 // Attach persistent event handlers
59 if (this.isBun) {
60 const nws = this.ws as unknown as globalThis.WebSocket
61 nws.addEventListener('message', this.onBunMessage)
62 nws.addEventListener('error', this.onBunError)
63 nws.addEventListener('close', this.onBunClose)
64 } else {
65 const nws = this.ws as unknown as WsWebSocket
66 nws.on('message', this.onNodeMessage)
67 nws.on('error', this.onNodeError)
68 nws.on('close', this.onNodeClose)
69 }
70 }
71
72 onclose?: () => void
73 onerror?: (error: Error) => void
74 onmessage?: (message: JSONRPCMessage) => void
75
76 // Bun (native WebSocket) event handlers
77 private onBunMessage = (event: MessageEvent) => {
78 try {
79 const data =

Callers

nothing calls this directly

Calls 5

handleErrorMethod · 0.95
handleCloseCleanupMethod · 0.95
jsonParseFunction · 0.85
toStringMethod · 0.65
parseMethod · 0.45

Tested by

no test coverage detected