• Главная
  • Контакты
Подписаться:
  • 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

Подписка


ЛУЧШЕЕ

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

Реверсим штатный ключ сигнализации JAC-Москвич +61

19:02

Минцифры идёт на зачистку. Малые операторы — под нож… +44

09:01

Тридцать три тысячи жизней: самое громкое киберпреступление в истории Финляндии +38

07:02

userver 3.0 — большой релиз фреймворка для IO‑bound‑программ, переход на C++20 +32

08:17

Разработка RC-машинки с BLDC. Подход с нуля +27

12:00

Практическое руководство по Qwen: установка, настройка vLLM и работа через API +26

11:39

Ловим время в формате DCF77 +23

08:00

Автоматизируем создание глобального роутера для связи выделенного и облачного серверов +23

07:00

PicoClaw на Arduino Uno Q +22

13:47

Зачем айтишнику писать книги, и почему сейчас — самый лучший момент? +21

07:05

Если трос оборвался. Что произойдет с кабиной лифта в самом плохом случае? +20

15:30

Я много лет пытался повысить продуктивность и качество жизни — эксперименты над собой (Часть 2) +17

07:06

Рецензия на книгу «Основы разработки приложений для iOS» +17

06:20

IT-монополии наперегонки сращиваются с государством: кто быстрее? +17

09:30

Запускаем Qwen3.6 35B-A3B + opencode локально на RTX 4070 12GB — AI-ассистент для разработки без облака +16

16:25

$1.8 миллиарда, два брата и ноль проверок: как The New York Times попалась на AI-хайп +15

11:21

CSS для тех, кто спал и проснулся +15

13:01

Устанавливаем почтовый сервер Addy.io для одноразовых почтовых адресов +14

07:09

Возвращение легенды: почему Fortran снова в топе и где его использовать сегодня +14

13:49

PLONK: разбираем уязвимости криптографического протокола +13

16:24

Я много лет пытался повысить продуктивность и качество жизни — эксперименты над собой (Часть 1) +92

08:00

Я удалил backpropagation из нейросети. Она обучилась методами XIX века +87

11:37

Ревью вайб-кода с гнильцой, который притворяется оптимизированным С++ кодом +74

14:43

Почему время замедляется при ускорении? Объяснение, которое вы нигде не найдёте +65

06:30

Инфраструктура Шрёдингера: как вывести ИТ-ресурсы из суперпозиции и знать всё об активах наверняка +51

07:00

Как устроена торговля между звёздными системами +48

09:01

Что было бы, если бы Linux распространялся под BSD +45

13:01

Голоса в компьютере: поющие сидя +39

10:04

— Мам, купи Suno. — У нас есть Suno дома! ACE‑Step XL 4B — русскоязычная музыкальная студия с открытым исходным кодом +34

15:24

Просто про волновое сопротивление кабеля +33

17:50

AGI уже стучится в дверь человечества. А мы всё ещё думаем, что он станет нашим лучшим другом +31

10:55

Чем занимается инженер отдела сопровождения разработки: от предсерийного образца до стабильного продукта +24

09:01

12 проблем с отбором резюме: чиним найм по науке +24

06:40

Как организовать балансировку нагрузки Backend приложений Java Spring Cloud + Kubernetes +23

11:11

Как (не) перевернуть строку, или Ох, уж этот Unicode +22

07:15

Часы на ВЛИ ИВ-18 +22

07:01

Minisystem: сервисный режим, который может пригодиться каждому, кто работает с СХД +21

07:23

Как я искал проблему в режиме работы, а упёрся в осанку: почему сутулость у меня заметно ухудшала память +20

04:53

Кризис инструментария API: почему разработчики бегут от Postman и его клонов? +18

07:07

Конденсаторное травление печатных плат или фотоэлектрический плоттер ;-)? +16

ОБСУЖДАЕМОЕ

  • Почему время замедляется при ускорении? Объяснение, которое вы нигде не найдёте +65

    • 356   44000

    Я много лет пытался повысить продуктивность и качество жизни — эксперименты над собой (Часть 1) +92

    • 145   28000

    Просто про волновое сопротивление кабеля +33

    • 90   15000

    Как устроена торговля между звёздными системами +48

    • 86   12000

    Senior Backend не существует. Вы ищете троих +7

    • 53   15000

    Что было бы, если бы Linux распространялся под BSD +45

    • 48   15000

    Маск передумал: Model 2 возвращается, но рынок бюджетных авто уже занят китайцами +7

    • 42   6400

    AGI уже стучится в дверь человечества. А мы всё ещё думаем, что он станет нашим лучшим другом +31

    • 38   12000

    Роботы заменят людей? +3

    • 35   4800

    Реверсим штатный ключ сигнализации JAC-Москвич +61

    • 35   9400

    Часы на ВЛИ ИВ-18 +22

    • 35   9300

    Ревью вайб-кода с гнильцой, который притворяется оптимизированным С++ кодом +74

    • 34   20000

    Кризис инструментария API: почему разработчики бегут от Postman и его клонов? +18

    • 31   11000

    Если трос оборвался. Что произойдет с кабиной лифта в самом плохом случае? +20

    • 29   7000

    — Мам, купи Suno. — У нас есть Suno дома! ACE‑Step XL 4B — русскоязычная музыкальная студия с открытым исходным кодом +34

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