Как реализовать личные сообщения PHP в RealTime. Я понимаю обычную логику с базой данной: Код (Text): id - номер сообщения form - откуда to - куда date - дата read - прочитано иль нет Это простая схема с базой данной, но как теперь это связать с базой данной? Если делать через Ajax, а именно такой код при отправки сообщения: Код (Javascript): $("[data-action='send_msg']").on( "click", function() { jQuery.ajax({ url: "ajax/send.php", type: "POST", dataType: "html", data: jQuery("#msg_inpute").serialize(), success: function(response) { $('#text').text(response); }, error: function(response) { notification('Внутренняя ошибка. (#FFF01)', 'error', 5000); } }); }); Здесь все понятно, кроме одного, как сделать, чтобы скрипт именно добавлял дополнительные поля, а не заменял уже написанное сообщение? Затем, каким образом сделать, чтобы при отправки от другого пользователя сообщения, отображение его у меня. Есть вариант постоянно делать Update div с циклом, но это мягко говоря глупо и затратно по запросам к БД. Следующий вариант ждать от другого пользователя запрос на сервер, а с другой стороны, то есть с клиентской, её как-то обрабатывать. Вот на этом варианте я и остановился. Сколько не смотря документации по WebSocket, ничего толком не понятно. Правда я пробовал только с Socket.Io, но с ним так и не разобрался. Посоветуйте решение, или какой-нибудь другой WebSocket с более понятной документацией.
раз уже используешь jquery посмотри у него append Что конкретно не понятно? В интернете полно чатов на websockets и они простые
Извините за долгий ответ. Именно как связать сайт с node, какой порт прослушивания нужно устанавливать и как сделать связь с базой данной, да при этом проверять авторизирован ли пользователь, иль нет. По логике проверка идет через Class ООП, но я не знаю, можно ли связать этот класс со скриптом php.
Использовать https://learn.javascript.ru/websockets или библиотеки которые с ним работают https://tools.ietf.org/html/rfc6455 и https://ru.wikipedia.org/wiki/WebSocket использовать можно 80 порт или 443, просто если у тебя на этом IP уже есть веб сервер, порт можешь выбрать другой используй базу данных из node, её и из PHP можно так же использовать если нужно https://habrahabr.ru/post/200866/ тут что-то про авторизацию есть
@denis01 var socket = new WebSocket("ws://javascript.ru/ws"); Где взять адрес протокола? Или можно свой адрес сайта вводить и это будет называться протоколом?
ws:// протокол там указываться, чтобы клиент знал что ожидать от сервера главное чтобы там был настроен websocket сервер, например ws:// по умолчанию пойдёт на 80 порт, а wss:// на 443, это как http:// и https://. вот для node есть https://www.npmjs.com/package/websocket для него есть пример https://github.com/theturtle32/WebSocket-Node/blob/master/example/whiteboard/whiteboard.js там сервер запускают на 8080 порту без шифрования Код (Javascript): app.listen(8080); // на сервере , значит адрес ws://тут ip сервера или домен:8080 Код (Javascript): var url = "ws://" + document.URL.substr(7).split('/')[0]; // на клиенте https://github.com/theturtle32/WebSocket-Node/blob/master/example/whiteboard/public/client.js --- Добавлено ---самый простой вариант это использовать socket.io, там node уже настроен + клиент и сервер --- Добавлено --- для socket.io есть даже чат как пример https://socket.io/demos/chat/ там и исходный код View source code
Вот socket.io я и не понимаю, а именно постоянно через терминал запускать скрипт, если на локалке то получается адрес localhost:8080 А на хосте вообще не работает. Хост поддерживает - Макхост
@denis01 Как "подружить" socket.io с PHP, а именно передать логин пользователя? Я знаю банальный способ это на странице сделать так: Код (Javascript): var username='<?=$user?>'; А после передавать в сам скрипт, но это будет не приемлемо, особенно если буду запросы.
Centrifugo. Это приложение для раздачи сообщений клиентам. Оно не отменяет необходимость продуматб хранение сообщений, но красиво и правильно решает проблему доставки сообщений real-time https://opensource.mail.ru/Centrifugo PHP передает сообщение в центрифугу - а она передает их браузерам получателей.