Socket.IO初探

創建Server

//server.js
var
io = require('socket.io')(80); var chat = io .of('/chat') //設定命名空間 .on('connection', function (socket) { socket.emit('a message', { //這個只會發送給本身的socket that: 'only' , '/chat': 'will get' }); chat.emit('a message', { //全局發送 everyone: 'in' , '/chat': 'will get' }); }); var news = io .of('/news') .on('connection', function (socket) { socket.emit('item', { news: 'item' }); });
<script>
  var chat = io.connect('http://localhost/chat')  //這裏的/chat /news 就是命名空間,跟URL不要緊喔
    , news = io.connect('http://localhost/news'); //也能夠直接io(),這樣會根據你當前的URL來鏈接
  
  chat.on('connect', function () {
    chat.emit('hi!');
  });
  
  news.on('news', function () {
    news.emit('woot');
  });
</script>

發送回執

//server.js
var
io = require('socket.io')(80); io.on('connection', function (socket) { socket.on('ferret', function (name, fn) { fn('woot'); }); });

client.js服務器

<script>
  var socket = io(); // TIP: io() with no args does auto-discovery
  socket.on('connect', function () { // TIP: you can avoid listening on `connect` and listen on events directly too!
    socket.emit('ferret', 'tobi', function (data) {   //emit函數第三個可選參數是一個回調函數,其能夠有參數,參數的調用由服務器決定
      console.log(data); // data will be 'woot'
    });
  });
</script>

 設定發送對象

socket.emit() //發送本身
socket.broadcase.emit()  //發送到出本身之外的用戶
io.emit()  //發送所有用戶
io.of()    //設置命名空間
io.to() // 房間的用戶
相關文章
相關標籤/搜索