Socket.IO Socket ที่ใช้ได้ทุก browser by

31
Oct
5

Socket.IO คือ library ตัวหนึ่งซึ่งถูกเขียนขึ้นโดยภาษา NodeJS (Javascript ฝั่ง Server Side) ซึ่งเป็นภาษาใหม่มาแรงในขณะนี้เพราะการทำงานแบบ Asynchronous สามารถทำงานหลายๆ อย่างพร้อมกันแบบ Parallel ได้ (เรียกว่าการเขียนโปรแกรมแบบ Event-driven) เว็บไซต์ที่ใช้งาน Socket.IO เช่น yammer.com, trello.com, c9.io (Cloud9) รวมไปถึงสามารถนำไปใช้ทำเกมประเภท MMORPG ได้ด้วยเช่นกัน

ทำไมต้องใช้ Socket.IO?

  • Support —IE 5.5+, Safari 3+ ,Chrome 4+ , Firefox 3+, Opera 10+
  • Cross domain support
  • ใช้ Websocket เป็น protocol หลัก มีความเร็วในการเชื่อมต่อที่สูงมาก
  • ใช้ง่าย

สาเหตุที่ Socket.IO สามารถใช้งานได้ครอบคลุมทุก browser เป็นเพราะจริงๆ เบื้องหลังของ Socket.IO ใช้รูปแบบการเชื่อมต่อได้หลายรูปแบบ ได้แก่

  1. —WebSocket
  2. Adobe® Flash® Socket
  3. AJAX long polling
  4. AJAX multipart streaming
  5. Forever Iframe
  6. JSONP Polling

หากใช้ตัวแรกไม่ได้ browser ไม่ support ตัว library จะเลื่อนไปใช้ตัวถัดไปโดยอัตโนมัติ และจากในรายการจะเห็นว่ามี AJAX ด้วยซึ่งอย่างที่เราทราบกันวว่าใช้ได้ใน browser แทบทุกตัว จึงเป็นเหตุผลว่าทำไม Socket.IO จึงสามารถใช้งานได้ทุก browser

การ Setup

  • ต้องใช้ NodeJS version ตั้งแต่ 0.4 เป็นต้นไป (ปัจจุบัน 0.8)
  • npm install socket.io

ตัวอย่าง code server

var io = require('socket.io').listen(80);

io.sockets.on('connection', function (socket) {
socket.emit('news', { hello: 'world' });
socket.on('my other event', function (data) {
console.log(data);
});
});

ตัวอย่าง code client


Enjoy this article?

Consider subscribing to our RSS feed!

5 ความเห็น

  1. คูน
    09:17 on January 7th, 2013

    ผมพบว่าการเข้าใช้ node.js app บางคนบน PC โดยใช้ Chrome กับ Firefox ไม่ได้ แต่ IE ได้
    app ผมใช้ port 8080,8082 แบบนี้น่าจะเกิดจากปัญหาอะไร ทำไมบางคนใช้ได้ บางคนใช้ไม่ได้

  2. heha
    09:21 on January 7th, 2013

    ผมใช้ได้ทุก browser ไม่มีปัญหาอะไรนะครับ โอกาสที่เป็นไปได้คือคนที่เข้าไม่ได้เข้าจากที่ทำงานซึ่ง block ทุก port ยกเว้น 80 และ 443 ครับ

  3. คูน
    09:29 on January 7th, 2013

    ผมใช้ socket.io ด้วย
    อย่างนั้นจะมีวิธีแก้อย่างไรบ้างครับ ถ้าเกิดปัญหาที่มีการบล็อค แบบนี้ app เราก็ใช้ไม่ได้ทุกคนน่ะซิครับ

  4. heha
    09:37 on January 7th, 2013

    ต้องมีสอง ip สำหรับให้รัน web server และ Nodejs แยกกันเพื่อให้อยู่บน port 80, 443 ครับ มีอีกอย่างลอง force ให้ผู้ใช้ใช้ https อาจจะช่วยได้ครับ

  5. คูน
    10:54 on January 7th, 2013

    สะดวกคุยมั้ยครับ?? ผมมีคำถามเพิ่มเติม comment ไม่สะดวกครับ

ใส่ความเห็น

RSS feed for comments on this post