Soy nuevo en WS y Heroku y todo eso... así que tengo este código
// esto configura sockets del lado del cliente, supongo
import {io} from 'socket.io-client'; const options = { "force new connection": true, reconnectionAttempts: "Infinity", timeout : 10000, transports : ["websocket"] } const socket = io('/', options) export default socket;y para el lado del servidor
const path = require('path'); const express = require('express'); const app = express(); const server = require('http').createServer(app); const io = require('socket.io')(server); const {version, validate} = require('uuid'); const ACTIONS = require('./src/socket/actions'); const PORT = process.env.PORT || 3001; ///more codeCuando se implementa en heroku, esto da como resultado esta aplicación https://lit-atoll-99067.herokuapp.com/ y la consola de Chrome dice:
La conexión de WebSocket a 'wss://lit-atoll-99067.herokuapp.com/socket.io/?EIO=4&transport=websocket' falló: WebSocket se cierra antes de que se establezca la conexión.
Así que me quedé sin ideas. pero supongo que esto tiene que ser sobre el puerto o algo... realmente no lo sé. ¡Cualquier idea es bienvenida!
Creo que necesita pasar la URL completa en el lado del cliente, pero solo pasó el ejemplo "/": -
import {io} from 'socket.io-client'; const options = { "force new connection": true, reconnectionAttempts: "Infinity", timeout : 10000, transports : ["websocket"] } // here need to pass the full url const socket = io('https://example.com/', options) export default socket;Y para el lado del servidor prueba esto
const express = require('express'); const app = express(); const http = require('http'); const server = http.createServer(app); const { Server } = require("socket.io"); const io = new Server(server); io.on('connection', (socket) => { console.log('a user connected'); }); server.listen(3000, () => { console.log('listening on *:3000'); });