Я использую socket.io с экспресс-сервером и приложением реакции. Код работает правильно, и данные отправляются / принимаются, как и ожидалось, но я продолжаю замечать ошибки подключения в консоли:
Соединение WebSocket с 'ws: //192.168.1.102: 3000 / sockjs-node / 351 / m2x50td4 / websocket' не удалось: WebSocket закрывается до установления соединения.
Сбой подключения WebSocket к 'ws: /socket.io/? EIO = 3 & transport = websocket': WebSocket закрывается до установления соединения.
websocket.js: 118 Соединение WebSocket с 'ws: //192.168.1.102: 3000 / socket.io /? EIO = 3 & transport = websocket & sid = fNkATGvOmjkq9po1AAA' не удалось: соединение закрылось до получения ответа на рукопожатие
Ошибка
Экспресс-сервер
const express = require('express');
const port = 5000;
const app = require('express')();
const server = require('http').createServer(app);
const io = require('socket.io')(server, {'transports': ['websocket', 'polling']});
// WebSocket handlers
io.on('connection', (client) => {
console.log('Websocket: New connection from'+ client.request.connection.remoteAddress);
client.on('setSwitchState', function (data, fn) {
switchController.setSwitch(data);
fn(data['jstate']);
});
client.on('disconnect', () => {
console.log('user disconnected');
})
});
server.listen(port, () => console.log(`Listening on port ${port}`));
React App
import React, { Component } from "react";
import io from 'socket.io-client';
const socket = io();
class ToggleSwitch extends Component {
socket.emit('setSwitchState', sendata, (data) => {
this.setState({checked: data});
});
}
}
export default (ToggleSwitch);