HapiJS и Socket IO не выделяют - PullRequest
0 голосов
/ 23 февраля 2019

Я пытаюсь настроить socket.io с хапи.Я установил репозиторий barebones здесь: https://github.com/imcodingideas/socketio-hapi-example, но это суть.На server.js я прослушиваю соединение

  io.sockets.on('connection', (socket) => {
    socket.emit({ msg: 'welcome' })
  })

, а на клиенте отправляю соединение

socket.on('msg', data => {
  console.log(data)
  socket.emit('my other event', { my: 'data' })
})

Я не получаю никаких ошибок Cors или ничего такогоон может подключиться.

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

Ваш код работает, и не имеет значения, куда вы положили server.start().

Проблема в вашем клиентском коде.Событие socket.on('connection') не существует для клиента socket.io.Событие называется connect.

IO - Событие: документация 'connect'

Следующий фрагмент кода должен работать.

const socket = io('http://localhost:8081');

socket.on('connect', data => {
    console.log('connected');
});

socket.on('msg', data => {
    console.log(data);
});

setTimeout(() => {
    socket.emit('another event', 'another events data')
}, 2000)

сервер:

const init = async () => {
  const io = SocketIO.listen(server.listener)

  io.sockets.on('connection', (socket) => {
    socket.emit('msg', 'welcome')

    socket.on('another event', (data) => {
      console.log(data);
    })
  })

  await server.start()
  console.log(`Server running at: ${server.info.uri}`)
}

0 голосов
/ 25 февраля 2019

Не запускайте сервер до инициализации прослушивателя сокетов.

'use strict'

const Hapi = require('hapi')
const SocketIO = require('socket.io')

const server = Hapi.server({
  port: 8081,
  host: 'localhost'
})

const init = async () => {
  // await server.start() // not here

  const io = SocketIO.listen(server.listener)

  io.sockets.on('connection', (socket) => {
    socket.emit('msg', 'welcome')
  })

  await server.start() // but  start it here.
  console.log(`Server running at: ${server.info.uri}`)
}

init()

Pro tip

Вы можете использовать Firecamp для визуального тестирования событий сокетов и слушателей

enter image description here

...