I want to make a chat application using oop architecture and javascript ES6 syntax. I don't know how to initialize socket.io. I did not find any help.
Here is my code.
import express from 'express';
import http from 'http';
import config from 'config';
import SocketIO from 'socket.io'
const app = express();
const port = config.PORT;
app.set('port', port);
const server = http.createServer(app);
var io = SocketIO(server);
io.on('connection', socket => {
console.log("Socket connected");
});
server.listen(port, () => console.log(`API running on localhost:${port}`));
I am trying to connect socket using socket-client-tool, it shows connection timeout.
Using import socketIo from 'socket.io';
did not work in my case.
I used the following method to solve this issue and to connect the socket to my already existing node express server on port 5000.
import cors from 'cors';
import { createServer } from 'http';
import { Server } from 'socket.io'; //replaces (import socketIo from 'socket.io')
const httpServer = createServer(app);
const io = new Server(httpServer, { cors: { origin: '*' } });
io.on('connection', (socket) => {
console.log('Connection established');
getApiAndEmit(socket);
socket.on('disconnect', () => {
console.log('Disconnected');
});
});
const getApiAndEmit = (socket) => {
const response = 'response you need';
socket.emit('FromAPI', response);
};
app.set('port', process.env.PORT || 5000);
httpServer.listen(app.get('port'), function () {
var port = httpServer.address().port;
console.log('Running on : ', port);
});
And in the client, I connected as follows:
import React,{ useState, useEffect } from 'react';
import socketIOClient from 'socket.io-client';
const ENDPOINT = 'http://127.0.0.1:5000'; //endpoint port 5000
const MyComponent = () => {
const [response, setResponse] = useState('');
useEffect(() => {
const socket = socketIOClient(ENDPOINT);
console.log(socket);
console.log(ENDPOINT);
socket.on('FromAPI', (data) => {
setResponse(data);
});
}, []);
return <p>{response}</p>
}
export default MyComponent;