Добрый день!
Пытаюсь разобраться с сокетами на PHP. Серверный скрипт запускаю через CLI. Сокет создается и ждет, но клиентская часть не может достучаться до него. Пользуюсь хостингом на яндекс cloud.
Подскажите, в чем проблема?
Скрипт сервера (запускаю через CLI)
set_time_limit(0);
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR, 1);
define('ADDR', '0.0.0.0');
define('PORT', 889);
if (socket_bind($socket, ADDR, PORT)) {
echo "Bind OK\n";
}
if (socket_listen($socket, 10)) {
echo "Listen OK\n";
}
echo "Start server!\n";
while(true) {
$accept = socket_accept($socket);
if ($accept) {
echo 'There are connection! Exit.\n';
socket_close($socket);
die;
}
}
Скрипт клиента
$(document).ready(function() {
console.log('start');
// let socket = new WebSocket("ws://echo.websocket.org");
let socket = new WebSocket("ws://127.0.0.1:889");
console.log(socket);
socket.onopen = function() {
message('Соединение установлено');
socket.send('Hello!');
}
socket.onclose = function() {
message('Соединение зарыто');
}
socket.onerror = function(error) {
message('Ошибка');
}
socket.onmessage = function(event) {
message(event.data);
}
})
function message(text) {
$('#chat-result').append('<div>' + text + '</div>');
}
UPDATE
Попробовал через телнет:
telnet 127.0.0.1 889
Достучался. А вот через браузер не получается(
UPDATE
Вопрос решил!
Проблема была в том, что с того же хоста стучал.
Сейчас все ок.