Веб сокеты или hello world по новому

от автора

Я не программист, Я любить заюзать готовые решение и получить результат в кратчайшие сроки. Сегодня, Я вам расскажу как я быстро поднял чатик на веб сокетах. И конкурс о сиськах в Московских пробках.
И так «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/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *