@Sienore

Как передать данные из HTTP сервера в WebSocket?

Добрый день.

Необходимо реализовать всплывающую карточку контакта в собственной CRM системе. Телефония посылает POST запросы на мой сервер, где я их разбираю. Как передать данные из HTTP сервера в WebSocket?

Код HTTP сервера

http.createServer(function (req, res) {
if (req.method == 'POST') {
    req.on('data', function(chunk) {
      console.log("Received body data:");
      console.log(chunk.toString());
    });
   
    req.on('end', function() {
      // empty 200 OK response for now
      res.writeHead(200, "OK", {'Content-Type': 'text/html'});
      res.end();
    });    
  }
}).listen(1337);


Код WebSocket сервера

const WebSocket = require('ws');
 
const wss = new WebSocket.Server({ port: 1337});
 
wss.on('connection', function connection(ws) {
  ws.on('message', function incoming(message) {
    console.log('received: %s', message);
  });
 
  ws.send('something');
});
  • Вопрос задан
  • 1100 просмотров
Пригласить эксперта
Ответы на вопрос 2
HackerX
@HackerX
Работаю в компании VOLO - Team Leader
Советую вместо обычного модуля ws использовать библиотеку Socket.io, а по поводу передачи данных с HTTP на ws - это делается так:
  1. Получаете с клиента нужные данные, например, с помощью POST запроса
  2. После этого нужно вызвать функцию, который возбуждает событие на стороне клиента, передав нужные данные


Клиент:
<!DOCTYPE html>
<html lang="ru">
<head>
  <meta charset="UTF-8">
  <title>Socket.io</title>
  <script src="/socket.io/socket.io.js"></script>
</head>
<body>
  <script>
    var socket = io();
    socket.on("hello", function(serverData) {
       alert(serverData);
    });
  </script>
</body>
</html>


сервер:
const app  = require('express')();
const http = require('http').Server(app);
const io   = require('socket.io')(http);

const mySuperData = "hellooooo kuku";

app.get('/', (req, res) => {
  res.sendFile(__dirname + '/index.html');
});
io.on('connection', (socket) => {
  socket.emit("hello", mySuperData);
});
http.listen(3000, () => {
  console.log('Сервер слушает порт 3000');
});


Пример использование Node.js / Socket.io.
Node.js — обработка событий.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы