[英]How to close socket connection for GraphQL subscription in Apollo
[英]Implement a socket connection in my apollo graphQL express server
我正在使用apollo-server-express
运行基于 express 的 apollo graphQL 服务器。
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 这样的库,它应该像这样使用(用于 express):
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 库不适合我的需求。
我对HL7 data
一无所知,我认为您的另一个应用程序是由 Java 编写的。
但是,如果你想用apollo-server-express
实现 socket.io 服务器,只需按照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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.