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

Расследование: отечественные микросхемы в счетчиках электроэнергии – миф или реальность? +41

11:36

От массивов до объектов в JavaScript: пособие для новичков +29

07:05

Плазменная антенна — как альтернатива металлическим конструкциям +25

04:42

Начальник контролировал всё: ввел отчеты по часам, просил скрин экрана и считал походы в туалет +25

09:01

Чем различаются гитарные усилители? +23

11:58

Shardman. Краткое пособие архитектора +21

04:34

Первый Спутник, язык FORTH и немного о JIT-компиляции +21

07:00

Самое дорогое удаление зубов мудрости +20

18:13

Монитор качества воздуха Zigbee своими руками +18

08:16

Мой опыт создания огромной книги по математике в LaTeX +17

10:35

Как используются динтаблицы YTsaurus: рекламные профили поведенческого таргетинга +16

13:01

Как не попасть на плохой хостинг: топ-15 признаков +15

07:50

Через диммеры — к звездам +15

10:55

Падение Data Mart и 100 миллиардов записей в ОЗУ. История о том, как починить в одиночку вендорский баг +14

12:35

Demoded: разбор олдскульных демо-эффектов на примере +13

08:05

Выгорание в IT. Как распознать первые сигналы и не сгореть +13

05:58

Перестаньте переживать об allowPrivilegeEscalation +13

09:48

30+ мессенджеров под разные бизнес-задачи. Чем заменить Teams, Slack и Jabber? +12

09:27

Почему компании выходят из облака? +11

15:05

Онбординг в графиках: как превратить адаптацию в измеримый и предсказуемый процесс +10

05:16

ICN Holding: самая кринжовая финансовая пирамида в мире +173

07:00

Знакомьтесь — это скутоид! И он часть вашего организма +98

07:28

Звонки через Jabber в докер-контейнере за 5 минут +71

13:01

Как меня едва не уволили из Apple (в первый раз) +70

12:27

Батин стол айтишника-удаленщика +52

14:05

Сложно о простом. Все, что бы вы хотели знать о SFP модулях. Часть 1. Эволюция модулей и базовые понятия +47

22:10

Прогресс без доступа к его плодам: парадокс деградирующей медицины +46

08:56

Как адаптировать аналитику для тех, кто не хочет разбираться в графиках +46

12:28

Паттерны проектирования в Python, о которых следует забыть +39

08:10

Как фанфик по Гарри Поттеру стал лучшей книгой по рациональному мышлению для программистов +35

16:20

Тест новых аккумуляторов GP ReENERGY +33

09:01

Большие стройки новых ЦОДов в РФ на паузе, но спрос и цены продолжают расти +32

08:00

Вы не знаете TDD +26

09:21

Опасный пассив на балансе: технический долг в вашей инфраструктуре +22

13:37

LLM и их хрупкая логика: новое исследование ставит под сомнение Chain-of-Thought +18

08:02

Дневник инженера: часть 1. IPS в NGFW. Не только про сети, но и про безопасность +18

11:47

UX-исследование в Китае: как обойти культурные барьеры и собрать полезные инсайты +16

11:20

Как платформа Linear завела меня в кроличью нору local-first-разработки +15

06:50

Загорелась крыша — и вот что произошло через 15 минут +15

13:44

Почему квантовая электродинамика — самая точная теория в истории науки? +14

ОБСУЖДАЕМОЕ

  • Батин стол айтишника-удаленщика +52

    • 184   41000

    Прогресс без доступа к его плодам: парадокс деградирующей медицины +46

    • 72   7000

    Как я решила проблему ухода за котом во время отпуска: автономный лоток + смарт-кормушка с камерой +10

    • 60   15000

    Звонки через Jabber в докер-контейнере за 5 минут +71

    • 53   13000

    Вы не знаете TDD +26

    • 52   4800

    ICN Holding: самая кринжовая финансовая пирамида в мире +173

    • 46   21000

    Подключение к нескольким Linux-серверам по SSH без ввода пароля: пошаговое руководство -7

    • 43   6500

    Как фанфик по Гарри Поттеру стал лучшей книгой по рациональному мышлению для программистов +35

    • 41   19000

    Passkeys как альтернатива CAPTCHA: миф или будущее? -1

    • 39   864

    Знакомьтесь — это скутоид! И он часть вашего организма +98

    • 35   30000

    Зуб поболел и перестал: почему это случается и что делать? +4

    • 33   2300

    Сложно о простом. Все, что бы вы хотели знать о SFP модулях. Часть 1. Эволюция модулей и базовые понятия +47

    • 32   12000

    Начальник контролировал всё: ввел отчеты по часам, просил скрин экрана и считал походы в туалет +25

    • 31   14000

    Clean Architecture во frontend: почему я ушёл от FSD +5

    • 30   5300

    MZ-Executable | Исполняемые файлы и MS-DOS +9

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