• Главная
  • Контакты
Подписаться:
  • Twitter
  • Facebook
  • RSS
  • VK
  • PushAll
logo

logo

  • Все
    • Положительные
    • Отрицательные
  • За сегодня
    • Положительные
    • Отрицательные
  • За вчера
    • Положительные
    • Отрицательные
  • За 3 дня
    • Положительные
    • Отрицательные
  • За неделю
    • Положительные
    • Отрицательные
  • За месяц
    • Положительные
    • Отрицательные
  • За год
    • Положительные
    • Отрицательные
  • Сортировка
    • По дате (возр)
    • По дате (убыв)
    • По рейтингу (возр)
    • По рейтингу (убыв)
    • По комментам (возр)
    • По комментам (убыв)
    • По просмотрам (возр)
    • По просмотрам (убыв)
Главная
  • Все
    • Положительные
    • Отрицательные
  • За сегодня
    • Положительные
    • Отрицательные
  • За вчера
    • Положительные
    • Отрицательные
  • За 3 дня
    • Положительные
    • Отрицательные
  • За неделю
    • Положительные
    • Отрицательные
  • За месяц
    • Положительные
    • Отрицательные
  • Главная
  • Веб сокеты или hello world по новому

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

04.05.2017 13:58
lnroma 3 533 Источник
PHP*
Я не программист, Я любить заюзать готовые решение и получить результат в кратчайшие сроки. Сегодня, Я вам расскажу как я быстро поднял чатик на веб сокетах. И конкурс о сиськах в Московских пробках.
И так «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. конкурс — конкурс с сиськами (тест на сообразительность, ведь завтра пятница)

не сложно правда ли?
Поделиться с друзьями
-->

Комментарии (3)


  1. ishef
    04.05.2017 17:14
    #10203604
    +2

    Не могу определить что хуже — грамматика или смысл.


  1. vlreshet
    04.05.2017 17:15
    #10203606

    Ээээ… ммм… и?


  1. rapita
    04.05.2017 17:30
    #10203622
    +1

    Это быстрый перевод Creating Your First Application из документации?

МЕТКИ

  • Хабы
  • Теги

php

WebSockets

server

СЕРВИСЫ
  • logo

    CloudLogs.ru - Облачное логирование

    • Храните логи вашего сервиса или приложения в облаке. Удобно просматривайте и анализируйте их.
Все публикации автора
  • Модные направления в разработке

    • 16.05.2017 15:50

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

    • 04.05.2017 13:58

    Информационая безопасность в сфере телекома на примере Megafon'а -5

    • 17.10.2016 14:45

    GUI для php, или скрещиваем написанное расширение с скриншотером +2

    • 04.10.2016 23:48

    Пишем расширение с помощью библиотеки php-cpp для php7 +18

    • 01.10.2016 21:46

    Разработка addon firefox, или ещё один скриншотер с помощью webExtensions и addon sdk

    • 26.09.2016 13:31

    Разработка расширения для firefox, или мой первый опыт, на примере скриншотера +18

    • 23.09.2016 18:07

    Системные скрипты на php для linux, пишем скриншотер +2

    • 22.09.2016 14:10

    Разработка сервера на php и системных скриптов -2

    • 17.09.2016 15:51

    В России заблокировали сайты PornHub и YouPorn

    • 14.09.2016 15:43

Подписка


ЛУЧШЕЕ

  • Сегодня
  • Вчера
  • Позавчера
06:49

Треть века в ящике. За что мы всё еще любим электронную почту и почему она будет жить вечно? +6

05:07

Как я использовал ИИ для создания трейлера книги: опыт без дизайнера +4

06:30

Как ChatGPT удалил в нашем чате 555 спам-сообщений с точностью 98,38% +1

04:15

«Ошибка выжившего», или как я, проработав тренером 10 лет, с первого собеседования попал в IT +94

06:18

Авторизация в Kafka: управление изменениями, когда у тебя тысячи клиентов и миллионы RPS +41

19:35

Как в 19 лет я начал путь разработчика встраиваемого ПО +34

17:01

В айти не войти или о бедном стажёре замолвите слово… +32

13:01

Про анодирование алюминия +31

08:02

Шум вокруг ИИ подобен парадоксу Солоу +30

11:48

Режим ночной съемки: три алгоритма улучшения мобильных фотографий +27

19:15

Уничтожение EXE: 640 Байт для программы на C +24

08:07

Раздувание таблиц в PostgreSQL: работа с vacuum и pg_repack +23

05:26

Больше никаких правок! Или как я сдаю прототипы с первого раза +23

20:16

AutoCraft Bot — Telegram-автоматизация Windows без монитора, глазами незрячего разработчика +22

09:01

Нелюбимая многими педаль перегруза Marshall Jackhammer JH-1 +22

15:01

Космическая цензура: стесняются ли чёрные дыры своих сингулярностей +18

11:06

Не корми Яндекс: зачем мы сделали свою метрику +18

08:52

ЦИПР-2025: российский рынок взрослеет, но велосипеды изобретает по-прежнему +17

12:15

Об ошибках округления и способах борьбы с ними +15

07:06

10 мифов об A/B-тестировании: как избежать распространённых заблуждений в статистическом анализе +14

08:13

Математики нашли совершенно новый способ поиска простых чисел +13

07:31

Ремонт Nintendo Switch Lite после залития водой. Это не всегда приговор +13

10:29

Intel и AMD приготовиться: NVIDIA делает свой собственный процессор для ПК с мощнейшей графикой +12

07:49

Юра, мы всё: как Россия проиграла новую космическую гонку +214

13:01

Что же такое TPU +75

13:16

Visopsys — ОС, которую написал один человек +61

11:18

Основная проблема с кадрами или на заметку HR +57

18:06

Всё, что мы узнали с юристом о запрете рекламы в запрещённых соцсетях с 1 сентября +44

10:03

Как мы учим роботов ходить плавно, или Почему градиент градиента — это не опечатка, а ключ к безопасной робототехнике +43

11:05

Запускаем MIPI DSI экраны от смартфонов. Разработка схемы основной платы. Часть 1. Обзор решений, создаём своё +39

09:01

Жизнь и смерть Карла Коха: первый хакер на службе КГБ в поисках всемирного заговора и тайны числа 23. Часть 8 +35

08:02

Интерфейсы без экрана: как разговаривают голосовые ассистенты, когда никто не слышит +33

13:24

BA + UX: смешать, но не взбалтывать. Как мы объединили дизайн и аналитику на примере очень запутанной фичи +30

11:41

Эволюция UI за 35 лет: от GIF и Comic Sans к нейросетям и адаптивам +30

12:47

Я тестировщик и два месяца работал без рук. Вот, что я понял +21

13:16

Почему Go такой странный, и ещё 8 холиварных тем про Golang +19

09:02

Под капотом WordPress — разбираем движок и изучаем инструменты +19

10:40

Использование open source в KasperskyOS +17

09:46

Как обобрать дерево в несколько потоков? +17

09:16

Обнаружение дронов (БПЛА) с использованием ИИ и компьютерного зрения +17

11:23

Обновление контроллеров Cisco APIC.  Что же может пойти не так? +14

21:52

Релиз без сюрпризов: как мы уменьшили количество багов в проде +13

21:52

Релиз без сюрпризов: как мы уменьшили количество багов в проде +13

ОБСУЖДАЕМОЕ

  • Юра, мы всё: как Россия проиграла новую космическую гонку +214

    • 664   62000

    Почему сознание нельзя запрограммировать (критика механистических теорий сознания) +11

    • 100   2400

    Это был идеальный кандидат, и он получил отказ. Вы не поверите почему -14

    • 80   48000

    Всё, что мы узнали с юристом о запрете рекламы в запрещённых соцсетях с 1 сентября +44

    • 50   6500

    В айти не войти или о бедном стажёре замолвите слово… +32

    • 47   8100

    «Ошибка выжившего», или как я, проработав тренером 10 лет, с первого собеседования попал в IT +101

    • 45   22000

    Это база(!) -2

    • 45   6000

    Основная проблема с кадрами или на заметку HR +57

    • 43   7100

    Обнаружение дронов (БПЛА) с использованием ИИ и компьютерного зрения +17

    • 42   4100

    Пара слов об алгебре интервалов +5

    • 35   1300

    Я тестировщик и два месяца работал без рук. Вот, что я понял +21

    • 32   11000

    Конец Windows 10 — лучший подарок для Linux? Почему десктопный рынок останется прежним +10

    • 29   3900

    Как сейчас поживает моя нода в Фидонете? +6

    • 24   1300

    Как мы учим роботов ходить плавно, или Почему градиент градиента — это не опечатка, а ключ к безопасной робототехнике +43

    • 23   4300

    Под капотом WordPress — разбираем движок и изучаем инструменты +19

    • 22   3100
  • Главная
  • Контакты
© 2025. Все публикации принадлежат авторам.