18
Socket.IO Andriy S.

Socket.IO

  • Upload
    elantix

  • View
    72

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Socket.IO

Socket.IOAndriy S.

Page 2: Socket.IO

Socket.IO - JavaScript бібліотека для веб-додатків і обміну даними в реальному часі. Складається з двох частин: клієнтської, яка запускається в браузері і серверної на Node.js.

Автором socket.io є Гільєрмо Раух.

Page 3: Socket.IO

Підтримка в браузерах

Socket.io завжди вибирає найкращий з можливих методів зв'язку реального часу. Нижче представлений список всіх методів, які він підтримує:

WebSocketAdobe Flash SocketAJAX long pollingAJAX multipart streamingForever IframeJSONP Polling

Так, наприклад, в роботі ПРИ Chrome Socket.io буде використовувати WebSockets. А якщо ваш браузер не підтримує WebSockets, то бібліотека спробує використовувати Adobe Flash Socket, а якщо і цей варіант не підійде, то AJAX long polling і так далі.

Page 4: Socket.IO

Схема роботи

Page 5: Socket.IO

Моя схема роботи

Page 6: Socket.IO

Клієнтська частина

<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>

Page 7: Socket.IO

Серверна частина

npm install socket.io

Page 8: Socket.IO

Запуск і результати

Page 9: Socket.IO

Відправка повідомлень

Відправка усім користувачам

socket.on('disconnect', function () { io.emit('user disconnected',user); });

Відправка поточному користувачу (сокету)

socket.on('request_users',function(){ socket.emit('users',users); });

Page 10: Socket.IO

Відправка повідомлень

Відправка усім користувачам крім поточного

socket.on('add_user',function(data){ user = { 'id' : data.id, 'name' : data.name }; users.push(user); socket.broadcast.emit('add_user',user); });

Page 11: Socket.IO

Серверна частина

Page 12: Socket.IO

Звязка з Angular.js

Page 13: Socket.IO

Redis

Redis - це високопродуктивне нереляційних розподілене сховище даних . На відміну від Memcached , який може в будь-який момент видалити ваші дані , витісняючи старі записи новими , Redis зберігає інформацію постійно.composer require predis/predis (публікатор)

npm install ioredis (підписник)

Page 14: Socket.IO

Laravel Event

Page 15: Socket.IO

Redis (Node.Js)

node server.jsphp artisan queue:listen

Page 16: Socket.IO

Захист додатка

1. Захист на рівні сервера.

2. Захист на рівні зєднання.

3. Захист підписки на канал.

var io = require('socket.io')(6001,{ origins : 'angular.loc:*'}),

Page 17: Socket.IO

Захист на рівні зєднання

npm install request

Page 18: Socket.IO

Захист підпискою на канал