| 409 | } |
| 410 | |
| 411 | messageFromEvent(event: MessageEvent): ?ClientServerSocketMessage { |
| 412 | if (typeof event.data !== 'string') { |
| 413 | console.log('socket received a non-string message'); |
| 414 | return null; |
| 415 | } |
| 416 | |
| 417 | let rawMessage; |
| 418 | try { |
| 419 | rawMessage = JSON.parse(event.data); |
| 420 | } catch (e) { |
| 421 | console.log(e); |
| 422 | return null; |
| 423 | } |
| 424 | |
| 425 | if (rawMessage.type !== serverSocketMessageTypes.COMPRESSED_MESSAGE) { |
| 426 | return rawMessage; |
| 427 | } |
| 428 | |
| 429 | const result = this.props.decompressSocketMessage(rawMessage.payload); |
| 430 | try { |
| 431 | return JSON.parse(result); |
| 432 | } catch (e) { |
| 433 | console.log(e); |
| 434 | return null; |
| 435 | } |
| 436 | } |
| 437 | |
| 438 | receiveMessage: (event: MessageEvent) => Promise<void> = async event => { |
| 439 | const message = this.messageFromEvent(event); |