简体   繁体   中英

Implement a socket connection in my apollo graphQL express server

I'm running an express based apollo graphQL server using 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

Now I need to connect to some other applications from my client. Therefore he provides me with HL7 data. He told me to 'use a socket to get the HL7 data' , which my application can use. I just don't have a clue how to implement a socket connection at all.

Doing some researches brought me to libraries like socket.io, which should be used like this (for express):

const app = require('express')();
const server = require('http').createServer(app);
const io = require('socket.io')(server);
io.on('connection', () => { /* … */ });
server.listen(3000)

I don't understand how to implement the io in my existing code shown above.

I never used or implemented a socket connection at all, so I have very big understanding problems with that. Maybe the socket.io library is not the correct thing for my needs.

I do not have any knowlege about HL7 data , I think your another app has been writen by Java.

But, if you want to implement a socket.io server with apollo-server-express , just follow socket.io official document and attach a http server to express app and socket.io , then start your http server.

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM