บันทึกปัญหา socket.io บน multi-containers

--

พอดีทีมมีทำ feature หนึ่งที่ต้องใช้ socket.io นั่นก็คือ chat ทีนี้ ตอน dev ไม่มีปัญหากัน พอเอาขึ้น production ก็ลองเล่นกัน แล้วมัน connection_error ตลอด

ก็เลยคิดอยู่ว่า dev env กับ prod env มันต่างกันตรงที่ dev มี container เดียว แต่ prod มี 2 containers หรืออาจจะเพิ่มไปอีก ถ้าคนใช้เยอะ

แล้วก็มา debug กัน จนเห็นว่า อ๋อมี error message ว่า Error: xhr poll error ก็เลยเอาไปค้นเจอวิธีแก้ใน stack overflow ก็คือ ใส่ options หนึ่งเพิ่มไปที่ socket client

{
transports:['websocket']
}

ทีนี้มาดู document กันว่ามันมี options อะไรบ้าง (https://socket.io/docs/v4/client-options/) ก็คือ default มันเป็น [“polling”, “websocket”] แล้วก็เขามีอธิบายการทำงานว่า ทำไมต้องใช้ polling ด้วย https://socket.io/docs/v4/how-it-works/#upgrade-mechanism

โชคดีที่หาเจอ รอดตัวไปอีก issue

อ้างอิง

https://stackoverflow.com/questions/69450485/receiving-error-xhr-poll-error-socket-io-client-react

--

--