Реализовать сокет-соединение на моем сервере apollo graphQL express - PullRequest
0 голосов
/ 28 февраля 2019

Я использую экспресс-сервер 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.log('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 не подходит для моих нужд.

1 Ответ

0 голосов
/ 06 марта 2019

У меня нет никаких знаний о 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.log('Listening on port ' + port)
  }
})

io.on('connection', (socket) => {
  console.log('A client connected', socket.id)
});

export default app
...