Socket.IO Socket ที่ใช้ได้ทุก browser by heha
Oct5
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 ใช้รูปแบบการเชื่อมต่อได้หลายรูปแบบ ได้แก่
- WebSocket
- Adobe® Flash® Socket
- AJAX long polling
- AJAX multipart streaming
- Forever Iframe
- 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!
09:17 on January 7th, 2013
ผมพบว่าการเข้าใช้ node.js app บางคนบน PC โดยใช้ Chrome กับ Firefox ไม่ได้ แต่ IE ได้
app ผมใช้ port 8080,8082 แบบนี้น่าจะเกิดจากปัญหาอะไร ทำไมบางคนใช้ได้ บางคนใช้ไม่ได้
09:21 on January 7th, 2013
ผมใช้ได้ทุก browser ไม่มีปัญหาอะไรนะครับ โอกาสที่เป็นไปได้คือคนที่เข้าไม่ได้เข้าจากที่ทำงานซึ่ง block ทุก port ยกเว้น 80 และ 443 ครับ
09:29 on January 7th, 2013
ผมใช้ socket.io ด้วย
อย่างนั้นจะมีวิธีแก้อย่างไรบ้างครับ ถ้าเกิดปัญหาที่มีการบล็อค แบบนี้ app เราก็ใช้ไม่ได้ทุกคนน่ะซิครับ
09:37 on January 7th, 2013
ต้องมีสอง ip สำหรับให้รัน web server และ Nodejs แยกกันเพื่อให้อยู่บน port 80, 443 ครับ มีอีกอย่างลอง force ให้ผู้ใช้ใช้ https อาจจะช่วยได้ครับ
10:54 on January 7th, 2013
สะดวกคุยมั้ยครับ?? ผมมีคำถามเพิ่มเติม comment ไม่สะดวกครับ