PHP*
Веб сокеты или hello world по новому
Я не программист, Я любить заюзать готовые решение и получить результат в кратчайшие сроки. Сегодня, Я вам расскажу как я быстро поднял чатик на веб сокетах. И конкурс о сиськах в Московских пробках.
И так «hello world» с использованием ratchet socketo.me кому интересно прошу под кат
1. И так начнём с того что установим composer и создадим директорию с проэктом к примеру myProject.
2. Создаём composer.json с содержимым
И выполняем
3. Создадим директорию
4. Теперь создадим директорию
5. Для соединения страницы с сокетом достаточно вызова следующей функции js
для того что бы отловить сообщения от сокета на необходимо по вешать слушателя на сообщение
в data нам придёт ответ отправленный сервером в данном случае строка
6. Запуск этого добра:
— Запускаем сервер
— Открываем страничку и готово
В качестве заключения приведу ссылки:
1. Чатик на сокетах sidimvprobke.com
2. git репазиторий github.com/lnroma/sidimvprobke
3. конкурс — конкурс с сиськами (тест на сообразительность, ведь завтра пятница)
не сложно правда ли?
И так «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. конкурс — конкурс с сиськами (тест на сообразительность, ведь завтра пятница)
не сложно правда ли?
Поделиться с друзьями
ishef
Не могу определить что хуже — грамматика или смысл.