Upload
elantix
View
72
Download
0
Embed Size (px)
Citation preview
Socket.IOAndriy S.
Socket.IO - JavaScript бібліотека для веб-додатків і обміну даними в реальному часі. Складається з двох частин: клієнтської, яка запускається в браузері і серверної на Node.js.
Автором socket.io є Гільєрмо Раух.
Підтримка в браузерах
Socket.io завжди вибирає найкращий з можливих методів зв'язку реального часу. Нижче представлений список всіх методів, які він підтримує:
WebSocketAdobe Flash SocketAJAX long pollingAJAX multipart streamingForever IframeJSONP Polling
Так, наприклад, в роботі ПРИ Chrome Socket.io буде використовувати WebSockets. А якщо ваш браузер не підтримує WebSockets, то бібліотека спробує використовувати Adobe Flash Socket, а якщо і цей варіант не підійде, то AJAX long polling і так далі.
Схема роботи
Моя схема роботи
Клієнтська частина
<script src="/socket.io/socket.io.js"></script><script> var socket = io('http://localhost'); socket.on('news', function (data) { socket.emit('my other event', { my: 'data' }); });</script>
Серверна частина
npm install socket.io
Запуск і результати
Відправка повідомлень
Відправка усім користувачам
socket.on('disconnect', function () { io.emit('user disconnected',user); });
Відправка поточному користувачу (сокету)
socket.on('request_users',function(){ socket.emit('users',users); });
Відправка повідомлень
Відправка усім користувачам крім поточного
socket.on('add_user',function(data){ user = { 'id' : data.id, 'name' : data.name }; users.push(user); socket.broadcast.emit('add_user',user); });
Серверна частина
Звязка з Angular.js
Redis
Redis - це високопродуктивне нереляційних розподілене сховище даних . На відміну від Memcached , який може в будь-який момент видалити ваші дані , витісняючи старі записи новими , Redis зберігає інформацію постійно.composer require predis/predis (публікатор)
npm install ioredis (підписник)
Laravel Event
Redis (Node.Js)
node server.jsphp artisan queue:listen
Захист додатка
1. Захист на рівні сервера.
2. Захист на рівні зєднання.
3. Захист підписки на канал.
var io = require('socket.io')(6001,{ origins : 'angular.loc:*'}),
Захист на рівні зєднання
npm install request
Захист підпискою на канал