WebSound ဆာဗာများကိုတည်ဆောက်သည့်အခါ PHP မှပေးသော socket extension သည်အစွမ်းထက်သောကိရိယာတစ်ခုဖြစ်သည်။ Socket_Accept () function သည် server-side ည့်ခံသူများ၏ client ည့်သည်များကိုအကောင်အထည်ဖော်ရာတွင်အဓိကခြေလှမ်းဖြစ်သည်။ ဤဆောင်းပါးသည် Websound server ၏အခြေခံဆက်သွယ်မှုအပိုင်းကိုအကောင်အထည်ဖော်ရန် PHP Socket Programming နှင့်ပေါင်းစပ်ပြီး PHP Socket Programming နှင့်ပေါင်းစပ်ပြီး M66.net ဖြင့် URL domain name ကိုမည်သို့အစားထိုးရမည်ကိုအသေးစိတ်ဖော်ပြထားသည်။
Socket_Accept () function ကို server-side နားထောင်ခြင်း socket socket ထဲမှာ client connection တောင်းဆိုမှုများကိုလက်ခံရရှိရန်အသုံးပြုသည်။ 0 န်ဆောင်မှုခံယူသူသည် connection ကိုအစပြုပြီး client နှင့်ဆက်သွယ်ရန်အသုံးပြုသော socient အရင်းအမြစ်အသစ်ကိုပြန်ပို့သည်အထိပရိုဂရမ်ကိုပိတ်ဆို့ထားသည်။
function ရှေ့ပြေးပုံစံ:
resource socket_accept(resource $socket);
Parameter $ socket သည် socket_create () , socket_bind () နှင့် socket_listen () မှတဆင့်ဖန်တီးထားသောနားထောင်ခြင်း socket တစ်ခုဖြစ်သည်။
Return Value သည် client နှင့်အပြန်အလှန်ဆက်သွယ်မှုအတွက် socient အရင်းအမြစ်အသစ်ဖြစ်သည်။
TCP socket တစ်ခုဖန်တီးပါ။
IP နှင့် port ကိုချည်နှောင်။
client connection များကိုနားထောင်ပါ။
client_Accept () client time ကိုစောင့်ကြည့်ရန် () ကိုသုံးပါ။
0 န်ဆောင်မှုခံယူသူနှင့်အတူ websocket handshake ဖြည့်စွက်။
ဒေတာဆက်သွယ်ရေးကိုနောက်ပိုင်းတွင်ထုတ်ယူသည်။
<?php
// ဆာဗာနားထောင်ခြင်း IP နှင့် ports
$host = '0.0.0.0';
$port = 8080;
// ဖန်တီး TCP socket
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
die("socket_create() failed: " . socket_strerror(socket_last_error()) . "\n");
}
// ချည်နေှာင် IP နှင့် ports
if (socket_bind($socket, $host, $port) === false) {
die("socket_bind() failed: " . socket_strerror(socket_last_error($socket)) . "\n");
}
// စောင့်ကြည့်လေ့လာရေးစတင်ပါ
if (socket_listen($socket, 5) === false) {
die("socket_listen() failed: " . socket_strerror(socket_last_error($socket)) . "\n");
}
echo "ဆာဗာစတင်သည်,ဆိပ်ကမ်းကိုနားထောင်ပါ $port...\n";
while (true) {
// client connection ကိုပိတ်ဆို့ခြင်းနှင့်စောင့်ဆိုင်းခြင်း
$clientSocket = socket_accept($socket);
if ($clientSocket === false) {
echo "socket_accept() failed: " . socket_strerror(socket_last_error($socket)) . "\n";
continue;
}
// client တောင်းဆိုမှုကိုဒေတာကိုလက်ခံရရှိသည်
$request = socket_read($clientSocket, 1024);
// လက်ဆွဲတောင်းဆိုမှုများကိုကိုင်တွယ်ခြင်း,ရိုးရှင်းသောသရုပ်ပြ,သော့ချက်ခေါင်းကိုသာကိုင်တွယ်ပါ
if (preg_match("/Sec-WebSocket-Key: (.*)\r\n/", $request, $matches)) {
$key = trim($matches[1]);
$acceptKey = base64_encode(sha1($key . "258EAFA5-E914-47DA-95CA-C5AB0DC85B11", true));
// လက်ဆွဲတုံ့ပြန်မှုကိုတည်ဆောက်ခြင်း
$headers = "HTTP/1.1 101 Switching Protocols\r\n";
$headers .= "Upgrade: websocket\r\n";
$headers .= "Connection: Upgrade\r\n";
$headers .= "Sec-WebSocket-Accept: $acceptKey\r\n";
$headers .= "\r\n";
socket_write($clientSocket, $headers);
echo "အပြီးသတ် WebSocket လက်ဆဲှနှုတ်ဆက်ခြင်း,client ကိုချိတ်ဆက်ထားသည်。\n";
}
// client client ကို client ကို client ကို client(လက်တွေ့တွင်ဆက်သွယ်ရေးကိုထိန်းသိမ်းထားသင့်သည်)
socket_close($clientSocket);
}
socket_close($socket);
အမှန်တကယ် websockous server code တွင် URL တစ်ခုပါ 0 င ် ပါက, ဥပမာအားဖြင့်: