@OliveRrRrr

Почему при перезагрузке сервера у меня каждый раз добавляется один вебсокет?

стоит nodemon я не вношу изменений в сервер, просто нажимаю сохранить, он перезагружает сервер и на клиенте у меня каждый раз +1 соединение, 1 из них постоянно обменивается. Вопрос следующий - почему старое продолжает висеть со статусом 101? или это нормальное поведение?

export const socketMiddleware = (
  wsActions: TSocketChatMiddlewareActions
): Middleware<{}, RootState> => {
  return (store) => {
    let socket: Socket | null = null

    return (next) => (action) => {
      const { dispatch } = store
      const {
        wsConnect,
        wsDisconnect,
        wsSendMessage,
        wsConnecting,
        wsOnOpen,
        wsOnClose,
        wsOnError,
        wsOnMessage,
      } = wsActions

      if (wsConnect.match(action)) {
        console.log('connect', socket)
        socket = io('http://localhost:5000', {
          path: '/api/messages',
          transports: ['websocket'],
          reconnectionDelay: 5000,
        })

        dispatch(wsConnecting())
      }

      if (socket) {
        socket.on('connect', () => {
          console.log('socket open = ', socket!.id)
          //  dispatch(wsOnOpen())
        })

        socket.on('connect_error', (error) => {
          console.log('socket error', error.message)
          //  dispatch(wsOnError(`Error === ${error.message}`))
        })

        socket.on('disconnect', (reason: any) => {
          console.log('socket close', reason)

          // dispatch(wsOnClose())
        })

        if (wsDisconnect.match(action)) {
          console.log('socket disconnect')
          socket.disconnect()
          socket = null

          dispatch(wsOnClose())
        }
      }

      next(action)
    }
  }
}

658951675deeb768679562.jpeg
  • Вопрос задан
  • 1077 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
22 нояб. 2024, в 00:55
500 руб./за проект
21 нояб. 2024, в 23:30
300000 руб./за проект
21 нояб. 2024, в 22:21
3000 руб./в час