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

Подписка


ЛУЧШЕЕ

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

Горизонтальное шардирование: проблемы, решения, практические рекомендации +1

09:01

Тетрод, пентод — зачем триоду дополнительные сетки? +50

07:05

Что известно о межзвёздной комете 3I/ATLAS, которую можно увидеть сейчас? +44

13:01

Как менялись фотокамеры в телефонах и почему мегапиксели — не главное +36

10:24

Войти в айти, выйти из айти: если защемило карьерным турникетом +34

06:24

Настраиваем nano под себя +25

18:15

Путеводитель по матанализу, который скрывали от вас в вузе +22

08:34

Security by design на практике: проектирование безопасной инфраструктуры +21

08:06

Оживляем самый массовый карточный таксофон двухтысячных +20

13:57

Книга «Современный C#. Разработка настольных, облачных, мобильных и веб-приложений». Работа со встроенными массивами +19

14:52

Как решать LeetCode? Легко! Нужно просто… +16

07:23

Наследие кода: разбор С и С++ модулей Erlang, которые работают десятилетиями +16

13:05

У меня 300 задач, и все самые приоритетные. Вот что я делаю +15

16:05

История игровой журналистики в России. Часть 10. Другие журналы о компьютерных играх +14

16:05

Судно на воздушной подушке — насколько оно реально для самостоятельной постройки (мини модель)? +14

12:15

Шардирование сервиса объявлений Авито Доставки. Часть II +13

09:24

Большие деньги. В самом прямом смысле этого слова +13

07:05

В защиту «обычных» разработчиков +13

08:59

Разработка с AI в 2025: от идеи до продакшена с Claude Code +12

08:59

Разработка с AI в 2025: от идеи до продакшена с Claude Code +12

08:31

Системный архитектор на фотоохоте: про доверие птиц, магию момента и мужика с пивом +12

08:22

Эмуляция «тетриса» Apollo из 90-х и запуск кода на оригинальном железе +100

09:01

Реставрация, которая меня сломала: Почему убрать смех из Скуби-Ду сложнее, чем сделать ремастер Тома и Джерри в 2к +60

08:00

А кто у вас отвечает за kube-api? Безопасность Kubernetes при помощи CIS Benchmark +46

07:02

Почему операционный усилитель — плохой компаратор +46

12:15

Как мы воскресили русский NLP и сократили потребление памяти на 90% +44

05:06

Как изготовить корпус из листового металла +44

08:57

Перед вами первый «торговый автомат» по продаже крепкого алкоголя. Вы не поверите, но ему уже почти три века +37

09:58

Кому нужен Graphviz, если можно написать его самому? +36

06:01

Особенности Python, о которых вас точно спросят на техническом собеседовании. Часть 2 +33

13:01

Ansible Inventory: полное руководство от localhost до AWS +32

12:11

Open source-стратегии: как МойОфис развивает открытый подход — рассказывает Тамара Щепалкина, CTO компании +32

07:38

Почему я отказался от ORM в пользу чистого SQL +30

07:00

История опенсорс-проекта LUWRAIN: как эксперименты с LLM помогают создавать невизуальные интерфейсы для незрячих +30

09:20

Тестируем плату RF Demo Kit for NanoVNA-F +29

22:46

Алфавитная идеология и буквенный символизм +28

05:34

Эти компании заменили тысячи людей на ИИ, а потом дали заднюю. Как так вышло? +28

13:15

Поднимаем внутренний мессенджер и VoIP-сервер без нарушения законодательства +26

12:15

Шардирование сервиса объявлений Авито Доставки. Часть I +22

14:09

Как ломали самый известный в мире код +21

07:05

Вкус успеха: съедобные 3D модели +21

ОБСУЖДАЕМОЕ

  • Вайбкодинг становится менее доступным: OpenAI закручивает гайки -1

    • 141   32000

    Программирование на русском языке -2

    • 111   8900

    Почему я отказался от ORM в пользу чистого SQL +30

    • 96   10000

    Эмуляция «тетриса» Apollo из 90-х и запуск кода на оригинальном железе +100

    • 51   6100

    Реставрация, которая меня сломала: Почему убрать смех из Скуби-Ду сложнее, чем сделать ремастер Тома и Джерри в 2к +62

    • 47   7600

    Почему операционный усилитель — плохой компаратор +46

    • 46   8100

    Перед вами первый «торговый автомат» по продаже крепкого алкоголя. Вы не поверите, но ему уже почти три века +37

    • 44   7200

    Как изготовить корпус из листового металла +44

    • 38   11000

    Как менялись фотокамеры в телефонах и почему мегапиксели — не главное +36

    • 36   3600

    Как мы воскресили русский NLP и сократили потребление памяти на 90% +44

    • 35   3700

    Что известно о межзвёздной комете 3I/ATLAS, которую можно увидеть сейчас? +44

    • 32   31000

    Эти компании заменили тысячи людей на ИИ, а потом дали заднюю. Как так вышло? +28

    • 30   5300

    Почему я выбрал Warp, а не Cursor или Claude Code: мои инструменты, MCP, подход и конкретные приёмы разработки с LLM +11

    • 29   7900

    Игровое кресло Fitchi Gaming C-04: очень функционально и невероятно дёшево, но вы его не купите -1

    • 28   4400

    Путеводитель по матанализу, который скрывали от вас в вузе +22

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