Я запускаю экспресс-сервер apollo graphQL, используя apollo-server-express.
import express from 'express'
import cors from 'cors'
import server from './graphql/schema'
app.use(cors())
server.applyMiddleware({ app, path: '/graphql' })
app.listen(port, async () => {
if (process.env.NODE_ENV !== 'production') {
console.info('Listening on port ' + port)
}
})
export default app
Теперь мне нужно подключиться к некоторым другим приложениям из моего клиента. Поэтому он предоставляет мне данные HL7. Он сказал мне «используйте сокет для получения данных HL7», который может использовать мое приложение. Я просто понятия не имею, как реализовать подключение к сокету вообще.
Проведение некоторых исследований привело меня к таким библиотекам, как socket.io, которые следует использовать следующим образом (для экспресс):
const app = require('express')();
const server = require('http').createServer(app);
const io = require('socket.io')(server);
io.on('connection', () => { /* … */ });
server.listen(3000)
Я не понимаю, как реализовать io в моем существующем коде, показанном выше.
Я никогда не использовал и не реализовывал сокетное соединение, поэтому у меня очень большие проблемы с пониманием этого. Возможно, библиотека socket.io не подходит для моих нужд.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


У меня нет никаких знаний о HL7 data, я думаю, что ваше другое приложение было написано на Java.
Но если вы хотите реализовать сервер socket.io с помощью apollo-server-express, просто следуйте официальному документу socket.io и прикрепите http server к express app и socket.io, а затем запустите свой http-сервер.
import express from 'express'
import cors from 'cors'
import GraphQLServer from './graphql/schema'
import socketIO from 'socket.io'
import http from 'http'
let app = express() // You missed this line ?
let httpServer = http.Server()
let io = socketIO(httpServer)
app.use(cors())
GraphQLServer.applyMiddleware({ app, path: '/graphql' })
httpServer.listen(port, async () => { // I don't see your `port`
if (process.env.NODE_ENV !== 'production') {
console.info('Listening on port ' + port)
}
})
io.on('connection', (socket) => {
console.info('A client connected', socket.id)
});
export default app