[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"academy-blogs-th-1-1-all-compression-websocket-go-all--*":3,"academy-blog-translations-udozun70jfgum80":144},{"data":4,"page":132,"perPage":132,"totalItems":132,"totalPages":132},[5],{"alt":6,"collectionId":7,"collectionName":8,"content":9,"cover_image":10,"cover_image_path":11,"created":12,"created_by":13,"expand":14,"id":138,"keywords":139,"locale":114,"published_at":140,"scheduled_at":13,"school_blog":136,"short_description":141,"slug":142,"status":134,"title":6,"updated":143,"updated_by":13,"views":137},"Ep.26 Go กับ Compression บน WebSocket - ลดขนาดข้อมูล เพิ่มความเร็ว!","sclblg987654321","school_blog_translations","\u003Cp class=\"p1\">\u003Cstrong>Go กับ Compression บน WebSocket - ลดขนาดข้อมูล เพิ่มความเร็ว!\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp class=\"p3\">ใน EP นี้ เราจะเรียนรู้การทำ Compression หรือการบีบอัดข้อมูลบน WebSocket เพื่อช่วยลดขนาดของข้อมูลที่ส่งผ่านเครือข่าย และเพิ่มประสิทธิภาพของการสื่อสารในระบบของคุณครับ\u003C\u002Fp>\u003Cp class=\"p4\">&nbsp;\u003C\u002Fp>\u003Cp class=\"p3\">\u003Cstrong>Compression คืออะไร?\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp class=\"p3\">Compression คือการลดขนาดของข้อมูลก่อนที่จะส่งไปยังปลายทาง เพื่อ :\u003C\u002Fp>\u003Cp class=\"p3\">1. ลดการใช้แบนด์วิดท์ (Bandwidth)\u003C\u002Fp>\u003Cp class=\"p3\">2. เพิ่มความเร็วในการส่งข้อมูล\u003C\u002Fp>\u003Cp class=\"p3\">3. ลดเวลาแฝง (Latency)\u003C\u002Fp>\u003Cp class=\"p4\">&nbsp;\u003C\u002Fp>\u003Cp class=\"p3\">\u003Cstrong>ข้อดีของ Compression บน WebSocket\u003C\u002Fstrong>\u003C\u002Fp>\u003Cul class=\"ul1\">\u003Cli class=\"li3\">เหมาะกับข้อมูลขนาดใหญ่ เช่น JSON หรือข้อความยาว\u003C\u002Fli>\u003Cli class=\"li3\">เพิ่มความเร็วในการโหลดข้อมูล สำหรับเครือข่ายที่มีข้อจำกัด\u003C\u002Fli>\u003Cli class=\"li3\">ลดค่าใช้จ่าย โดยเฉพาะในระบบที่มีการคิดค่าบริการตามแบนด์วิดท์\u003C\u002Fli>\u003C\u002Ful>\u003Cp class=\"p4\">&nbsp;\u003C\u002Fp>\u003Cp class=\"p3\">\u003Cstrong>การใช้ Per-Message Deflate บน WebSocket\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp class=\"p3\">Per-Message Deflate เป็นหนึ่งในวิธีบีบอัดข้อมูลที่ได้รับการรองรับมาตรฐานใน WebSocket และสามารถใช้งานได้ง่ายใน Go ผ่านแพ็กเกจ&nbsp;\u003Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\u002F\u002Fl.facebook.com\u002Fl.php?u=https%3A%2F%2Fgithub.com%2Fgorilla%2Fwebsocket%3Ffbclid%3DIwZXh0bgNhZW0CMTAAAR0zc19pNNzXd9lifefCgtDMN7lAzqFj1Wi8DRGFc_LoSj7Kh-YoYNkS-9s_aem_ypkB0VgQdasGU-_ZDHJqyw&amp;h=AT1Ti4z3R7SDdwsNj2U0MEHwgdHbG-tYUs1JLP664L8Dq25ixscgy-5OcYrjJ9b4pycn3ztttCoJBmJFpE0_4vQvtviPnDRrd7HtDOjehkPB5Ro5ZuIcu14T7KhK7ccyMpKUNWPbuiBu6A5kYmXS1Xfflw&amp;__tn__=R*F\">\u003Cstrong>github.com\u002Fgorilla\u002Fwebsocket\u003C\u002Fstrong>\u003C\u002Fa>\u003C\u002Fp>\u003Cp class=\"p4\">&nbsp;\u003C\u002Fp>\u003Cp class=\"p3\">\u003Cstrong>ขั้นตอนการเปิดใช้งาน Compression\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp class=\"p3\">1. ใช้ EnableCompression เพื่อเปิดใช้งานการบีบอัด\u003C\u002Fp>\u003Cp class=\"p3\">2. ใช้ SetCompressionLevel เพื่อกำหนดระดับการบีบอัด\u003C\u002Fp>\u003Cp class=\"p3\">ในตัวอย่างนี้ :\u003C\u002Fp>\u003Cp class=\"p3\">เปิดใช้งาน Compression ด้วย EnableCompression : true\u003C\u002Fp>\u003Cp class=\"p3\">WebSocket จะบีบอัดข้อมูลอัตโนมัติเมื่อส่งข้อความระหว่างเซิร์ฟเวอร์และไคลเอนต์\u003C\u002Fp>\u003Cp class=\"p3\">ตัวอย่างการเปิดใช้งาน Compression บน WebSocket Server\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-plaintext\">package main\n\nimport (\n    \"log\"\n    \"net\u002Fhttp\"\n\n    \"github.com\u002Fgorilla\u002Fwebsocket\"\n)\n\nvar upgrader = websocket.Upgrader{\n    CheckOrigin: func(r *http.Request) bool {\n        return true\n    },\n    EnableCompression: true, \u002F\u002F เปิดใช้งาน Compression\n}\n\nfunc handleConnections(w http.ResponseWriter, r *http.Request) {\n    conn, err := upgrader.Upgrade(w, r, nil)\n    if err != nil {\n        log.Println(\"Error upgrading connection:\", err)\n        return\n    }\n    defer conn.Close()\n\n    log.Println(\"New client connected\")\n\n    for {\n        _, msg, err := conn.ReadMessage()\n        if err != nil {\n            log.Println(\"Error reading message:\", err)\n            break\n        }\n        log.Printf(\"Received: %s\", msg)\n\n        if err := conn.WriteMessage(websocket.TextMessage, msg); err != nil {\n            log.Println(\"Error writing message:\", err)\n            break\n        }\n    }\n}\n\nfunc main() {\n    http.HandleFunc(\"\u002Fws\", handleConnections)\n\n    log.Println(\"WebSocket server with compression started at :8080\u002Fws\")\n    http.ListenAndServe(\":8080\", nil)\n}\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp class=\"p3\">&nbsp;\u003C\u002Fp>\u003Cp class=\"p3\">\u003Cstrong>การตั้งค่า Compression Level\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp class=\"p3\">หากต้องการปรับระดับการบีบอัด สามารถใช้ SetCompressionLevel จากแพ็กเกจ compress\u002Fflate:\u003C\u002Fp>\u003Cp class=\"p3\">ระดับการบีบอัดที่แนะนำ :\u003C\u002Fp>\u003Cp class=\"p3\">flate.BestSpeed : สำหรับการบีบอัดที่รวดเร็ว\u003C\u002Fp>\u003Cp class=\"p3\">flate.BestCompression : สำหรับการบีบอัดสูงสุด\u003C\u002Fp>\u003Cp class=\"p3\">flate.DefaultCompression : ค่ามาตรฐาน\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-plaintext\">import \"compress\u002Fflate\"\n\n\u002F\u002F ตั้งค่าระดับการบีบอัด\nconn.SetCompressionLevel(flate.BestCompression) \u002F\u002F บีบอัดสูงสุด\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp class=\"p3\">การเปิดใช้งาน Compression บน WebSocket Client\u003C\u002Fp>\u003Cp class=\"p3\">WebSocket Client ต้องรองรับ Compression เช่นกัน โดยใน JavaScript WebSocket API จะรองรับการบีบอัดอัตโนมัติหากเซิร์ฟเวอร์เปิดใช้งาน\u003C\u002Fp>\u003Cp class=\"p3\">ตัวอย่างโค้ดฝั่ง Client :\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-plaintext\">const socket = new WebSocket(\"ws:\u002F\u002Flocalhost:8080\u002Fws\");\n\nsocket.onopen = () =&gt; {\n    console.log(\"Connected to server with compression\");\n    socket.send(\"Hello from client!\");\n};\n\nsocket.onmessage = (event) =&gt; {\n    console.log(\"Received:\", event.data);\n};\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>&nbsp;\u003C\u002Fp>\u003Cp class=\"p3\">\u003Cstrong>การตรวจสอบ Compression\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp class=\"p3\">1.&nbsp;การตรวจสอบด้วย Wireshark หรือ DevTools\u003C\u002Fp>\u003Cp class=\"p3\">ใช้ Wireshark จับข้อมูลแพ็กเก็ตและดูขนาดข้อมูล\u003C\u002Fp>\u003Cp class=\"p3\">ใช้ Developer Tools ของเบราว์เซอร์เพื่อตรวจสอบ Traffic ใน WebSocket\u003C\u002Fp>\u003Cp class=\"p4\">&nbsp;\u003C\u002Fp>\u003Cp class=\"p3\">2. การบันทึกขนาดข้อความก่อนและหลังบีบอัด\u003C\u002Fp>\u003Cp class=\"p3\">สามารถบันทึกขนาดข้อความเพื่อดูผลลัพธ์ของการบีบอัด :\u003C\u002Fp>\u003Cp class=\"p3\">ตัวอย่าง :\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-plaintext\">log.Printf(\"Original size: %d bytes\", len(originalMessage))\nlog.Printf(\"Compressed size: %d bytes\", len(compressedMessage))\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>&nbsp;\u003C\u002Fp>\u003Cp class=\"p3\">\u003Cstrong>สรุปง่ายๆ\u003C\u002Fstrong>\u003C\u002Fp>\u003Cul class=\"ul1\">\u003Cli class=\"li3\">Compression ช่วยลดขนาดของข้อมูลและเพิ่มความเร็วในการสื่อสาร\u003C\u002Fli>\u003Cli class=\"li3\">ใช้ EnableCompression เพื่อเปิดใช้งาน Compression บน WebSocket\u003C\u002Fli>\u003Cli class=\"li5\">ปรับระดับ\u003Cspan class=\"s2\"> Compression \u003C\u002Fspan>ด้วย\u003Cspan class=\"s2\"> SetCompressionLevel \u003C\u002Fspan>เพื่อให้เหมาะสมกับการใช้งาน\u003C\u002Fli>\u003C\u002Ful>","21_11zon_7vqzuu41lw.webp","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Fomwif3cavufy19c\u002F21_11zon_7vqzuu41lw.webp","2026-03-04 08:34:16.281Z","",{"keywords":15,"locale":108,"school_blog":118},[16,23,28,33,38,43,48,53,58,63,68,73,78,83,88,93,98,103],{"collectionId":17,"collectionName":18,"created":19,"created_by":13,"id":20,"name":21,"updated":22,"updated_by":13},"sclkey987654321","school_keywords","2026-03-04 08:20:11.547Z","ey3puyme01a9bsw","Go","2026-04-10 16:07:25.893Z",{"collectionId":17,"collectionName":18,"created":24,"created_by":13,"id":25,"name":26,"updated":27,"updated_by":13},"2026-03-04 08:20:14.253Z","ah6lvy4x8qe08l5","Golang","2026-04-10 16:07:26.172Z",{"collectionId":17,"collectionName":18,"created":29,"created_by":13,"id":30,"name":31,"updated":32,"updated_by":13},"2026-03-04 08:33:59.518Z","7pqn3y8ffwzzde5","ภาษา Go","2026-04-10 16:08:04.777Z",{"collectionId":17,"collectionName":18,"created":34,"created_by":13,"id":35,"name":36,"updated":37,"updated_by":13},"2026-03-04 08:34:06.204Z","uki2mmns85up9uf","Compression","2026-04-10 16:08:07.193Z",{"collectionId":17,"collectionName":18,"created":39,"created_by":13,"id":40,"name":41,"updated":42,"updated_by":13},"2026-03-04 08:34:00.920Z","ecac9y661or1xka","WebSocket","2026-04-10 16:08:05.227Z",{"collectionId":17,"collectionName":18,"created":44,"created_by":13,"id":45,"name":46,"updated":47,"updated_by":13},"2026-03-04 08:34:08.235Z","01e5gppie2axm4l","ลดขนาดข้อมูล","2026-04-10 16:08:07.889Z",{"collectionId":17,"collectionName":18,"created":49,"created_by":13,"id":50,"name":51,"updated":52,"updated_by":13},"2026-03-04 08:34:11.160Z","g1ncgq98hse39bh","เพิ่มความเร็ว","2026-04-10 16:08:08.968Z",{"collectionId":17,"collectionName":18,"created":54,"created_by":13,"id":55,"name":56,"updated":57,"updated_by":13},"2026-03-04 08:34:12.223Z","mbdm8vvumxwfnzi","Per-Message Deflate","2026-04-10 16:08:09.345Z",{"collectionId":17,"collectionName":18,"created":59,"created_by":13,"id":60,"name":61,"updated":62,"updated_by":13},"2026-03-04 08:32:27.645Z","vfe4f15x4b3afpm","การศึกษาการเขียนโปรแกรม","2026-04-10 16:07:54.538Z",{"collectionId":17,"collectionName":18,"created":64,"created_by":13,"id":65,"name":66,"updated":67,"updated_by":13},"2026-03-04 08:31:30.863Z","oyltq82epf0vqka","การเขียนโปรแกรม","2026-04-10 16:07:41.883Z",{"collectionId":17,"collectionName":18,"created":69,"created_by":13,"id":70,"name":71,"updated":72,"updated_by":13},"2026-03-04 08:34:09.187Z","3zp82zk9hqz13ko","การเขียนโปรแกรม Go","2026-04-10 16:08:08.225Z",{"collectionId":17,"collectionName":18,"created":74,"created_by":13,"id":75,"name":76,"updated":77,"updated_by":13},"2026-03-04 08:32:29.161Z","uewvwdt9cf41o8n","การเขียนโปรแกรมสำหรับมือใหม่","2026-04-10 16:07:54.935Z",{"collectionId":17,"collectionName":18,"created":79,"created_by":13,"id":80,"name":81,"updated":82,"updated_by":13},"2026-03-04 08:32:27.254Z","xl8ixz1jmfnab5f","ฝึกเขียนโปรแกรม","2026-04-10 16:07:54.377Z",{"collectionId":17,"collectionName":18,"created":84,"created_by":13,"id":85,"name":86,"updated":87,"updated_by":13},"2026-03-04 08:31:53.015Z","801w5t09mfaa9hl","ภาษาโปรแกรม","2026-04-10 16:07:46.625Z",{"collectionId":17,"collectionName":18,"created":89,"created_by":13,"id":90,"name":91,"updated":92,"updated_by":13},"2026-03-04 08:32:24.473Z","xquecx7u5svb567","โปรแกรม","2026-04-10 16:07:53.714Z",{"collectionId":17,"collectionName":18,"created":94,"created_by":13,"id":95,"name":96,"updated":97,"updated_by":13},"2026-03-04 08:20:37.794Z","x2c5z8w1cr41ij3","ภาษาโปรแกรมมิ่ง","2026-04-10 16:07:27.917Z",{"collectionId":17,"collectionName":18,"created":99,"created_by":13,"id":100,"name":101,"updated":102,"updated_by":13},"2026-03-04 08:26:56.612Z","yf74wkqyamfc5qx","โปรแกรมเมอร์","2026-04-10 16:07:36.426Z",{"collectionId":17,"collectionName":18,"created":104,"created_by":13,"id":105,"name":106,"updated":107,"updated_by":13},"2026-03-04 08:26:59.195Z","gab60xd583s3qaw","Superdev School","2026-04-10 16:07:37.087Z",{"code":109,"collectionId":110,"collectionName":111,"created":112,"flag":113,"id":114,"is_default":115,"label":116,"updated":117},"th","pbc_1989393366","locales","2026-01-22 10:59:55.832Z","twemoji:flag-thailand","s8wri3bt4vgg2ji",true,"Thai","2026-04-10 15:42:46.614Z",{"category":119,"collectionId":120,"collectionName":121,"expand":122,"id":136,"views":137},"wqxt7ag2gn7xcmk","pbc_2105096300","school_blogs",{"category":123},{"blogIds":124,"collectionId":125,"collectionName":126,"created":127,"created_by":13,"id":119,"image":128,"image_alt":13,"image_path":129,"label":130,"name":131,"priority":132,"publish_at":133,"scheduled_at":13,"status":134,"updated":135,"updated_by":13},[],"sclcatblg987654321","school_category_blogs","2026-03-04 08:33:53.210Z","59ty92ns80w_15oc1implw.png","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclcatblg987654321\u002Fwqxt7ag2gn7xcmk\u002F59ty92ns80w_15oc1implw.png",{"en":131,"th":131},"Golang The Series",1,"2026-03-16 04:39:38.440Z","published","2026-04-25 02:32:15.470Z","udozun70jfgum80",303,"omwif3cavufy19c",[20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100,105],"2025-01-27 04:41:22.209Z","เรียนรู้การทำ Compression บน WebSocket เพื่อช่วยลดขนาดข้อมูลที่ส่งผ่านเครือข่ายและเพิ่มประสิทธิภาพการสื่อสารในระบบของคุณ","compression-websocket-go","2026-04-25 02:47:30.525Z",{"th":142}]