Я не программист, Я любить заюзать готовые решение и получить результат в кратчайшие сроки. Сегодня, Я вам расскажу как я быстро поднял чатик на веб сокетах. И конкурс о сиськах в Московских пробках.
И так «hello world» с использованием ratchet socketo.me кому интересно прошу под кат
1. И так начнём с того что установим composer и создадим директорию с проэктом к примеру myProject.
2. Создаём composer.json с содержимым
{ "autoload": { "psr-0": { "MyApp": "src" } }, "require": { "cboden/ratchet": "0.3.*" } }
И выполняем composer install
3. Создадим директорию src/MyApp и обработчик Chat
<?php namespace MyApp; require_once('Db.php'); use Ratchet\MessageComponentInterface; use Ratchet\ConnectionInterface; use MyApp\Db; class Chat implements MessageComponentInterface { protected $clients; public function __construct() { $this->clients = new \SplObjectStorage; } public function onOpen(ConnectionInterface $conn) { // устанавливаем новое соеденение $this->clients->attach($conn); } // событие отправки сообщения в сокет public function onMessage(ConnectionInterface $from, $msg) { // отправляем сообщение всем тем кто присоеденился foreach ($this->clients as $client) { $client->send($msg); } } // закрытия соеденения public function onClose(ConnectionInterface $conn) { $this->clients->detach($conn); } // обработка ошибок public function onError(ConnectionInterface $conn, \Exception $e) { $conn->close(); } }
4. Теперь создадим директорию bin сервер server.php
<?php use Ratchet\Server\IoServer; use Ratchet\Http\HttpServer; use Ratchet\WebSocket\WsServer; use MyApp\Chat; require dirname(__DIR__) . '/vendor/autoload.php'; $server = IoServer::factory( new HttpServer( // запускаем http сервер new WsServer( // websocket сервер new Chat() // обработчик событий ) ), 8080, '127.0.0.1' ); $server->run();
5. Для соединения страницы с сокетом достаточно вызова следующей функции js
var conn = new WebSocket('ws://127.0.0.1:8080');
для того что бы отловить сообщения от сокета на необходимо по вешать слушателя на сообщение onmessage последнего
conn.onmessage = function(e) { console.log(e.data); }
в data нам придёт ответ отправленный сервером в данном случае строка
conn.send('hello world')
так мы можем отправить сообщение на сервер.
6. Запуск этого добра:
— Запускаем сервер php bin/server.php
— Открываем страничку и готово
В качестве заключения приведу ссылки:
1. Чатик на сокетах sidimvprobke.com
2. git репазиторий github.com/lnroma/sidimvprobke
3. конкурс — конкурс с сиськами (тест на сообразительность, ведь завтра пятница)
не сложно правда ли?
ссылка на оригинал статьи https://habrahabr.ru/post/328016/
Добавить комментарий