рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рд╡реЗрдм рд╕реЙрдХреЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЪреБрдирд╛ред рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░, рдореБрдЭреЗ y.i рдХреЗ рд╕рд╛рде рдиреЛрдб.рдЬреЗрдПрд╕ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓реЗрдЦреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдЪрд▓рд╛, рдФрд░ рд╣рдм рдкрд░ рд╡реЗрдм рд╕реЙрдХреЗрдЯ рдкрд░ рд▓рдЧрднрдЧ рд╕рднреА рд▓реЗрдЦ phpdaemon рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдирд┐рд░реНрджреЗрд╢ рдкрд░ рд╕реАрдорд┐рдд рдереЗред
рдореИрдВрдиреЗ
phpdaemon рдФрд░
рд╢рд╛рдлрд╝реНрдЯ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд┐рдпрд╛, рд╡реЗ рдХрд╛рдлреА рд░рд╛рдХреНрд╖рд╕реА рд╣реИрдВ (рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╢рд╛рдлрд╝реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЧрдИ рд╣реИ)ред рдореБрдЭреЗ рдпрд╣ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрдпрд╛ рдХрд┐ рдРрд╕реЗ рд░рд╛рдХреНрд╖рд╕реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рдиреНрд╣реЗрдВ рдЕрдиреНрдп рд░рд╛рдХреНрд╖рд╕реЛрдВ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрди рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рд╕рдм рдХреБрдЫ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдореИрдВ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╡реЗрдм рд╕реЙрдХреЗрдЯ рд╕рд░реНрд╡рд░ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдЗрд╕рд╕реЗ рдореБрдЭреЗ рдЙрд╕ рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕рдореЗрдХрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реА, рдЬрд┐рд╕рдХрд╛ рдореИрдВрдиреЗ рдЕрдзреНрдпрдпрди рдХрд┐рдпрд╛ рдФрд░ рдХреБрдЫ рдиреБрдХрд╕рд╛рдиреЛрдВ рдкрд░ рдареЛрдХрд░ рдЦрд╛рдИ, рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореБрдЭреЗ рдХреБрдЫ рднреА рдкрддрд╛ рдирд╣реАрдВ рдерд╛ред
рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд╕реНрдХреНрд░реИрдЪ рд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред
рдкрд░рд┐рдгрд╛рдореА рдХреЛрдб рдФрд░ рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рдбреЗрдореЛ рдЪреИрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХред
рд▓рдХреНрд╖реНрдп:
1) php рдореЗрдВ рд╕рд░реНрд╡рд░ рд╕реЙрдХреЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рд╕реМрджрд╛
2) рд╡реЗрдм рд╕реЙрдХреЗрдЯ рдХреЗ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд╕рд╛рде рд╕реМрджрд╛
3) рд╕реНрдХреНрд░реИрдЪ рд╕реЗ рд▓рд┐рдЦреЗрдВ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╡реЗрдм рд╕реЙрдХреЗрдЯ рд╕рд░реНрд╡рд░
1) php рдореЗрдВ рд╕рд░реНрд╡рд░ рд╕реЙрдХреЗрдЯ
рдЙрд╕ рдХреНрд╖рдг рддрдХ, рдореБрдЭреЗ рд╕рд░реНрд╡рд░ рд╕реЙрдХреЗрдЯреНрд╕ рдХрд╛ рдПрдХ рдЕрд╕реНрдкрд╖реНрдЯ рд╡рд┐рдЪрд╛рд░ рдерд╛ред рд╡реЗрдм рд╕реЙрдХреЗрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдЙрдирдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рджреЛ рдпреЛрдЬрдирд╛рдПрдБ рдЖрдИрдВ:
"рд╕реЙрдХреЗрдЯ" рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП:
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
рдпрд╛ php рдПрдХреНрд╕рдЯреЗрдВрд╢рди "рд╕реНрдЯреНрд░реАрдо" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░:
$socket = stream_socket_server("tcp://127.0.0.1:8000", $errno, $errstr);
рдореИрдВрдиреЗ рдЗрд╕рдХреА рд╕рдВрдХреНрд╖рд┐рдкреНрддрддрд╛ рдХреЗ рдХрд╛рд░рдг рджреВрд╕рд░реЗ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреАред
рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рдПрдХ рд╕рд░реНрд╡рд░ рд╕реЙрдХреЗрдЯ рдмрдирд╛рдпрд╛ рдФрд░ рдЕрдм рд╣рдо рдЗрд╕рдХреЗ рд▓рд┐рдП рдирдП рдХрдиреЗрдХреНрд╢рди рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рджреЛ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ
while ($connect = stream_socket_accept($socket, -1)) {
рдПрдХ рд╕рд╛рдзрд╛рд░рдг http рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдЬреЛ рд╕рднреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрддрд╛ рд╣реИ: рдирдорд╕реНрдХрд╛рд░ рдпрд╛ stream_select рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ
$connects = array(); while (true) {
рдПрдХ рд╕рд░рд▓ http рд╕рд░реНрд╡рд░ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ stream_select рд╣реИ, рдЬреЛ рд╕рднреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрддрд╛ рд╣реИ: рдирдорд╕реНрдХрд╛рд░ рдХреНрдпреЛрдВрдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рд╣рдореЗрдВ рдирдП рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рд╕реЙрдХреЗрдЯ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдФрд░ рдирдП рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рдореМрдЬреВрджрд╛ рдХрдиреЗрдХреНрд╢рди, рдлрд┐рд░ рд╣рдо рджреВрд╕рд░реЗ рд╡рд┐рдХрд▓реНрдк рдкрд░ рд░реБрдХреЗрдВрдЧреЗред
2) рд╡реЗрдм рд╕реЙрдХреЗрдЯ рдкреНрд░реЛрдЯреЛрдХреЙрд▓
рдпрд╣ рдЖрд▓реЗрдЦ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред
рд╣рдо рджреЛ рдмрд┐рдВрджреБрдУрдВ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ:
"рд╣реИрдВрдбрд╢реЗрдХ" рдпрд╛ рд╣реИрдВрдбрд╢реЗрдХ:
рд╣рдо рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╣реЗрдбрд░ рд╕реЗ рд╕реЗрдХ-рд╡реЗрдм-рд╕реЙрдХреЗрдЯ-рдХреА рдХрд╛ рдореВрд▓реНрдп рдкрдврд╝рддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЧрдгрдирд╛ рдХрд░реЗрдВ, рд╕реЗрдХ-рд╡реЗрдм-рд╕реЙрдХреЗрдЯ-рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ рдФрд░ рдЕрдВрддрд┐рдо рдЙрддреНрддрд░ рднреЗрдЬреЗрдВ:
$SecWebSocketAccept = base64_encode(pack('H*', sha1($SecWebSocketKey . '258EAFA5-E914-47DA-95CA-C5AB0DC85B11'))); $response = "HTTP/1.1 101 Web Socket Protocol Handshake\r\n" . "Upgrade: websocket\r\n" . "Connection: Upgrade\r\n" . "Sec-WebSocket-Accept:$SecWebSocketAccept\r\n\r\n";
рдЙрджрд╛рд╣рд░рдг рдлрд╝рдВрдХреНрд╢рди рдЬреЛ рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реИ function handshake($connect) { $info = array(); $line = fgets($connect); $header = explode(' ', $line); $info['method'] = $header[0]; $info['uri'] = $header[1];
рд╕рдВрджреЗрд╢ рд╕реЗрд╡рд╛
рд╡реЗрдм рд╕реЙрдХреЗрдЯ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдЗрд╕реЗ рдбрд┐рдХреЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдЗрд╕реЗ рднреЗрдЬрдиреЗ рдкрд░ рдПрдирдХреЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдПрдХ рд╣реА рд▓реЗрдЦ рдореЗрдВ рд╕рдм рдХреБрдЫ рд╕рдВрджреЗрд╢ рдХреЛрдбрд┐рдВрдЧ рдХрд╛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдореЗрдВ рдХреЗрд╡рд▓ рджреЛ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ: рдбреАрдХреЛрдб рдФрд░ рдПрдирдХреЛрдбред
рдбрд┐рдХреЛрдб рдФрд░ рдПрдирдХреЛрдб рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди function decode($data) { $unmaskedPayload = ''; $decodedData = array();
рд╕рд░рд▓ рд╡реЗрдмрд╕реЛрдХреЗрдЯ рд╕рд░реНрд╡рд░
рдЗрд╕рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА рд╣реИред
рдкрд╣рд▓реЗ рднрд╛рдЧ рд╕реЗ рдПрдХ рд╕рд░рд▓ http рд╕рд░реНрд╡рд░ рдХреЗ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рд╕рд╛рде рд╣реА рд╕рд╛рде рджреВрд╕рд░реЗ рд╕реЗ рд╣реИрдВрдбрд╢реЗрдХ, рдбреАрдХреЛрдб рдФрд░ рдПрдирдХреЛрдб рдлрд╝рдВрдХреНрд╢рди, рд╣рдо рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╡реЗрдм рд╕реЙрдХреЗрдЯ рд╕рд░реНрд╡рд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╡реЗрдм рд╕реЙрдХреЗрдЯ рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЖрдк рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП onOpen, onClose рдФрд░ onMessage рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред
рд▓рдХреНрд╖реНрдп рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВред
рдпрджрд┐ рдпрд╣ рд╕рд╛рдордЧреНрд░реА рдЖрдкрдХреЛ рджрд┐рд▓рдЪрд╕реНрдк рд▓рдЧрддреА рд╣реИ, рддреЛ рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдЖрдк рдХреИрд╕реЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрдиреЗрдХреНрд╢рди (рдПрдХ рдорд╛рд╕реНрдЯрд░ рдФрд░ рдХрдИ рд╢реНрд░рдорд┐рдХреЛрдВ) рдХреЗ рд▓рд┐рдП рдХрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрдВрдЯрд░рдкреНрд░реЛрд╕реЗрд╕ рд╕рдВрдЪрд╛рд░, yii рдШрдЯрдХ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдврд╛рдВрдЪреЗ рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдгред
рдЙрдкрд░реЛрдХреНрдд рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдбреЗрдореЛ рдЪреИрдЯрдбреЗрдореЛ рдЪреИрдЯ рдХреЛрдб рдЕрдкрдбреЗрдЯ (рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛):
- рд╕реНрдореГрддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ 9kb рдкреНрд░рддрд┐ рдХрдиреЗрдХреНрд╢рди рдЬрд╛рддрд╛ рд╣реИ
- рдпрджрд┐ рдЖрдк рдЦреБрд▓реЗ рд╕реЙрдХреЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп
fgets()
рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╣реИрдВрдЧ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ (рдлрд╝рдВрдХреНрд╢рди рд▓рд╛рдЗрди рдХреЗ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдпрд╛ рд╕рдордп рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдЧрд╛), рдХреНрдпреЛрдВрдХрд┐ рд╡реЗрдм рд╕реЙрдХреЗрдЯ рдХреЗ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╕рдВрджреЗрд╢ рд▓рд╛рдЗрди рдмреНрд░реЗрдХ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред fread()
рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ fread()
fwrite()
рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рд╕реЙрдХреЗрдЯ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд▓рд┐рдЦрддреЗ рд╕рдордп (рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦрд┐рдд рдмрд╛рдЗрдЯреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ), рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рд╕рднреА рдбреЗрдЯрд╛ рд╕реЙрдХреЗрдЯ рдХреЛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ- рд╕рд░реНрд╡рд░ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЧреНрд░рд╛рд╣рдХ
stream_socket_accept()
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИ - рдпрджрд┐ рд╕реЙрдХреЗрдЯ рдкрд░ utf-8 рдореЗрдВ рдЕрдиреБрдкрд╕реНрдерд┐рдд рдкрд╛рддреНрд░реЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рдкрд░, рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░реЗрдЧрд╛:
WebSocket connection to 'ws://sharoid.ru:8000/' failed: Could not decode a text frame as UTF-8.
- рдЬрд╛рдБрдЪ рдХрд░рддреЗ рд╕рдордп рдХрд┐ рдЧреНрд░рд╛рд╣рдХ рдиреЗ рдХреЛрдИ рдбреЗрдЯрд╛ рдирд╣реАрдВ рднреЗрдЬрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рд╕реЙрдХреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрдВрдж рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
!strlen($data)
, !$data
рдирд╣реАрдВ !$data
- рдЖрдк рд╡реЗрдм рд╕реЙрдХреЗрдЯ рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рдордиреЗ nginx рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ
рд▓реЗрдЦ рдХрд╛ рджреВрд╕рд░рд╛ рднрд╛рдЧ: рдЖрдИ.рдкреА.рд╕реА. рдЗрдВрдЯрд░рдкреНрд░реЛрд╕реЗрд╕ рд╕рдВрдЪрд╛рд░рднрд╛рдЧ рддреАрди: рдЪреИрдЯ рд╕реЗ рдЧреЗрдо рддрдХ: рдмреИрдЯрд▓ рд╕рд┐рдЯреАрдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб рдФрд░ рдЙрджрд╛рд╣рд░рдг рдЬреАрдердм рдкрд░ рд╣реИ рдФрд░ рдПрдордЖрдИрдЯреА рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд рдЙрдкрд▓рдмреНрдз рд╣реИ