iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 21
0
自我挑戰組

挑戰30天完成PHP聊天室範例系列 第 21

[Day21]第二十章-盤古開天(八)-WEBSOCKET SERVER端(2)

  • 分享至 

  • xImage
  •  

延續上一篇,
還沒講到自訂函數WebSocket(),
首先我們先建立WebSocket()這個函數,
記得要建立WebSocket連線必須綁定IP和Port,
所以函數需要接收這兩個值,如下:

function WebSocket($address,$port){
//do some
}

再來使用函數內建函數
socket_create()建立連線
socket_set_option() 設置socket選項
socket_bind()綁定ip&port
socket_listen() 進行監聽

AF_INET這個參數是用TCP或UDP來傳輸,用在IPv4的地址。
SOCK_STREAM這個協議是按照順序的、可靠的、數據完整的基於字節流的連接。這是一個使用最多的socket類型,這個socket是使用TCP來進行傳輸。
SOL_TCP傳輸控制協議,這是一個使用最多的可靠的公共協議,它能保證數據包能夠到達接受者那兒,如果在傳輸過程中發生錯誤,那麼它將重新發送出錯數據

//傳相應的IP與埠進行創建socket操作
  function WebSocket($address,$port){

    $server = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
    socket_set_option($server, SOL_SOCKET, SO_REUSEADDR, 1);//1表示接受所有的數據包
    socket_bind($server, $address, $port);
    socket_listen($server);
    $this->e('Server Started : '.date('Y-m-d H:i:s'));
    $this->e('Listening on  : '.$address.' port '.$port);
    return $server;
  }

這樣如果呼叫Sock這個class就會先進到建構子construct,
在經由建構子呼叫WebSocket()這個自訂函數來進行連線&監聽。


上一篇
[Day20]第十九章-盤古開天(七)-WEBSOCKET SERVER端(1)
下一篇
[Day22]第二一章-盤古開天(九)-WEBSOCKET SERVER端(3)
系列文
挑戰30天完成PHP聊天室範例30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言