PHP Socket застрял в принятии - PullRequest
0 голосов
/ 18 января 2019

У меня есть сервер сокета php и веб-сокет javascript, но веб-сокет застрял при подключении к сокету. Нет ошибки, но websocket остается подключенным.

sock.php

set_time_limit(0);

$ip   = '127.0.0.1';


$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$ret  = socket_bind($sock, $ip);
$ret  = socket_listen($sock);

do 
{
 $ref = socket_accept($sock);

 /*
   Write message
 */
 $msg ="Success receive from client\n";

 socket_write($ref, $msg, strlen($msg));

 /*
   Read message
 */
 $buf = socket_read($ref , 1024);

 echo "Received message: $buf\n";

 socket_close($ref);

}while (true);

socket_close($sock);

?>

javascript websocket:

var sock = new WebSocket('ws://localhost/sock.php');
sock.onopen(function()
{
 console.log('socket connected.');
});

1 Ответ

0 голосов
/ 18 января 2019

Вы должны указать правильный порт в socket_bind(), иначе он будет прослушивать произвольный порт. Вы проверяете это с помощью netstat в Linux и Windows. Когда вы пытаетесь подключиться к ws://localhost, это должен быть порт 80. Однако привязка к порту 80 обычно не разрешена, если вы не являетесь администратором. Лучше всего привязать к другому порту, например 8080, и подключиться к ws://localhost:8080.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...