Мое путешествие по WebSockets было не чем иным, как разочарованием, оказалось, что есть гораздо более простая реализация, чем Action Cable, поставляемый Ruby on Rails.
Что такое socket.io?
Socket.io — это простой пакет узлов, который избавляет от всех хлопот, связанных с созданием и управлением соединениями WebSocket. Я думаю, что это одна из самых удобных для пользователя реализаций, которые я когда-либо встречал, особенно если вы знаете JavaScript.
Как вы тоже можете реализовать простые веб-сокеты
Что ж, для этого требуется немного знаний о том, как работают WebSockets, в основном пользователь может подключаться к базе данных для отправки и получения новых добавленных данных, таких как сообщения из базы данных, при загрузке веб-страницы. После установки пакета узла socket.io с помощью «npm install socket.io» в вашей программе Node.js все, что вам нужно сделать, это добавить следующий скрипт в HTML-код целевой страницы.
<script src="/socket.io/socket.io.js"></script>
Это даст вам доступ к функциям socket.io в вашем файле index.js, чтобы использовать их, как только пользователь загрузит страницу, к которой прикреплен скрипт. Это просто!
Если вы используете Express для своего приложения Node.js, вам необходимо установить этот пакет http.js в свой индексный файл. Затем добавьте следующий код, чтобы настроить сервер socket.io для доступа к функциям.
const app = express() const server = http.createServer(app) const io = socketio(server)
Затем с помощью документации socket.io вы добавите функции обратного вызова, которые будут отправлять данные пользователя при подключении, отключении и отправке или получении сообщения, используя следующую структуру.
io.on('connection', (socket) => { socket.emit('request', /* */); // emit an event to the socket io.emit('broadcast', /* */); // emit an event to all connected sockets socket.on('reply', function(){ /* */ }); // listen to the event });
Желаю удачи в ваших собственных приключениях WebSocket. Я буду занят реализацией этого простого в использовании пакета в своих собственных приложениях!
Ознакомьтесь с моим демо-приложением для чата здесь с репозиторием GitHub с кодом для помощи: