在我的 apollo graphQL express 服务器中实现一个套接字连接
Posted
技术标签:
【中文标题】在我的 apollo graphQL express 服务器中实现一个套接字连接【英文标题】:Implement a socket connection in my apollo graphQL express server 【发布时间】:2019-07-22 19:52:51 【问题描述】:我正在使用 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 库不适合我的需求。
【问题讨论】:
【参考方案1】:我对@987654321@一无所知,我认为您的另一个应用程序是用Java编写的。
但是,如果你想实现一个带有apollo-server-express
的socket.io服务器,只需按照socket.io
官方文档并在express app
和socket.io
上附加一个http server
,然后启动你的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
【讨论】:
以上是关于在我的 apollo graphQL express 服务器中实现一个套接字连接的主要内容,如果未能解决你的问题,请参考以下文章
如何在我的 vue 模板脚本中有条件地调用 apollo 客户端?
res.cookie 不适用于 apollo-server-express
使用 apollo-express 限制或过滤 graphql 查询