Dar*_*ght 6 node.js socket.io graphql
我对graphql很陌生……这是我的服务器文件……我无法建立socket io连接……当我在socket io内执行控制台时,它不会进入函数内部……我想我我在这里做错了什么const io = require('socket.io')(server)......
var express = require('express');
var graphqlHTTP = require('express-graphql');
var {schema} = require('../graphql/schema');
var {root} = require('../graphql/resolver');
const EventEmitter = require('events');
var app = express();
var server = require('http').Server(app);
const event = new EventEmitter()
const io = require('socket.io')(server)
event.on('event', function(action) {
console.log(action)
io.on('connection', function (socket) {
console.log('socket')
socket.emit('action', action)
})
})
app.use('/graphql', graphqlHTTP({
schema: schema,
rootValue: root,
graphiql: true,
formatError(err) {
return {
message: err.message
};
}
}));
app.use('/voyager', middleware({ endpointUrl: '/graphql' }));
app.listen(3019);
Run Code Online (Sandbox Code Playgroud)
apollo 服务器- “...是使用任何来源的数据为 GraphQL 客户端快速构建生产就绪、自记录 API 的最佳方式。”
apollo-server-express - 使用 apollo 作为应用程序变量的“中间件”
// Node modules imports
require('dotenv').config({ path: './variables.env' })
const express = require('express')
const socketio = require('socket.io')
const { ApolloServer, gql } = require('apollo-server-express')
// Initalizes the app server
const app = express()
const typeDefs = gql`
type Query {
foo: String
}
`;
const resolvers = {
Query: {
foo: () => 'Foo world!'
},
};
const server = new ApolloServer({ typeDefs, resolvers });
server.applyMiddleware({ app });
// Listen to port 5000, save on const to attach io to it
const http = app.listen(5000, () =>
console.log(" Server ready at http://localhost:5000" + server.graphqlPath)
)
// Attach socket.io to the server instance
const io = socketio(http)
io.on('connection', (socket) => {
// related io code
})
Run Code Online (Sandbox Code Playgroud)
我强烈建议您阅读apollo的文档
更新@Coder
请记住始终将所有 io 代码包装在 io.connection 的连接方法中。
顺便说一句,您正在创建两个服务器实例,一个是 Express,一个是 Http。
将express中的服务器存储到const中并将其用于socket.io。
const app = express()
const server = app.listen(3019)
const io = require('socket.io')(server)
io.on('connection', (socket) => {
console.log('connected to socket')
// do event here inside
// enter code here
socket.on('some_event',()=>{ // do something })
socket.on('some_event_2',()=>{ // do something 2 })
socket.on('some_event_3',()=>{ // do something 3 })
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5413 次 |
| 最近记录: |