Javascript Koa安装/路由器+;socket.io集成
出于好奇,我选择Koa2作为我的主节点服务器。不幸的是,我在为客户机/服务器通信实现WebSocket方面遇到了困难。在下面的应用程序中,socket.io客户端拒绝连接到其服务器部件。有什么想法/提示吗Javascript Koa安装/路由器+;socket.io集成,javascript,node.js,socket.io,koa,koa2,Javascript,Node.js,Socket.io,Koa,Koa2,出于好奇,我选择Koa2作为我的主节点服务器。不幸的是,我在为客户机/服务器通信实现WebSocket方面遇到了困难。在下面的应用程序中,socket.io客户端拒绝连接到其服务器部件。有什么想法/提示吗 // main.js const argv = require('yargs'); const app = require('./src/app'); const conf = require('./config'); const port = argv.port || process.en
// main.js
const argv = require('yargs');
const app = require('./src/app');
const conf = require('./config');
const port = argv.port || process.env.PORT || conf.port || 3000;
app.listen(port);
console.log(`IOKvit Server is listening on port ${ port }...`);
// app.js
const Koa = require('koa');
const mount = require('koa-mount');
const router = require('./api');
const staticRoutes = require('./static');
const app = new Koa();
app.use(mount(staticRoutes));
app.use(router.routes());
app.use(router.allowedMethods());
const http = require('http');
const socket = require('socket.io');
const server = http.createServer(app.callback());
const io = new socket(server);
io.on('connection', function(socket){
console.log('a user connected')
});
module.exports = app;
// static.js
const Koa = require('koa');
const serve = require('koa-static');
const mount = require('koa-mount');
const path = require('path');
const staticApp = new Koa();
const root_dir = path.dirname(require.main.filename);
staticApp.use(serve(root_dir + '/static', { maxage: 60 * 1000 }));
staticApp.use(mount('/lib/vue', serve(root_dir + '/node_modules/vue/dist/', { maxage: 60 * 1000 })));
staticApp.use(mount('/lib/vue-material', serve(root_dir + '/node_modules/vue-material/dist/', { maxage: 60 * 1000 })));
staticApp.use(mount('/lib/vue-router', serve(root_dir + '/node_modules/vue-router/dist/', { maxage: 60 * 1000 })));
staticApp.use(mount('/lib/socket.io', serve(root_dir + '/node_modules/socket.io-client/dist/', { maxage: 60 * 1000 })));
staticApp.use(mount('/lib/roboto', serve(root_dir + '/node_modules/roboto-fontface/css/roboto/', { maxage: 60 * 1000 })));
staticApp.use(mount('/lib/material-icons-font', serve(root_dir + '/node_modules/material-icons-font/', { maxage: 60 * 1000 })));
module.exports = staticApp;
// api.js
const Router = require('koa-router');
const house = require('./house').controller;
const router = new Router();
router.get('/rooms', house.list_rooms);
router.get('/rooms/:name', house.room);
module.exports = router;
// app.js
const Koa = require('koa');
const mount = require('koa-mount');
const router = require('./api');
const staticRoutes = require('./static');
const app = new Koa();
app.use(mount(staticRoutes));
app.use(router.routes());
app.use(router.allowedMethods());
const http = require('http');
const socket = require('socket.io');
const server = http.createServer(app.callback());
const io = new socket(server);
io.on('connection', function(socket){
console.log('a user connected')
});
module.exports = app;
// static.js
const Koa = require('koa');
const serve = require('koa-static');
const mount = require('koa-mount');
const path = require('path');
const staticApp = new Koa();
const root_dir = path.dirname(require.main.filename);
staticApp.use(serve(root_dir + '/static', { maxage: 60 * 1000 }));
staticApp.use(mount('/lib/vue', serve(root_dir + '/node_modules/vue/dist/', { maxage: 60 * 1000 })));
staticApp.use(mount('/lib/vue-material', serve(root_dir + '/node_modules/vue-material/dist/', { maxage: 60 * 1000 })));
staticApp.use(mount('/lib/vue-router', serve(root_dir + '/node_modules/vue-router/dist/', { maxage: 60 * 1000 })));
staticApp.use(mount('/lib/socket.io', serve(root_dir + '/node_modules/socket.io-client/dist/', { maxage: 60 * 1000 })));
staticApp.use(mount('/lib/roboto', serve(root_dir + '/node_modules/roboto-fontface/css/roboto/', { maxage: 60 * 1000 })));
staticApp.use(mount('/lib/material-icons-font', serve(root_dir + '/node_modules/material-icons-font/', { maxage: 60 * 1000 })));
module.exports = staticApp;
// api.js
const Router = require('koa-router');
const house = require('./house').controller;
const router = new Router();
router.get('/rooms', house.list_rooms);
router.get('/rooms/:name', house.room);
module.exports = router;
// app.js
const Koa = require('koa');
const mount = require('koa-mount');
const router = require('./api');
const staticRoutes = require('./static');
const app = new Koa();
app.use(mount(staticRoutes));
app.use(router.routes());
app.use(router.allowedMethods());
const http = require('http');
const socket = require('socket.io');
const server = http.createServer(app.callback());
const io = new socket(server);
io.on('connection', function(socket){
console.log('a user connected')
});
module.exports = app;
// static.js
const Koa = require('koa');
const serve = require('koa-static');
const mount = require('koa-mount');
const path = require('path');
const staticApp = new Koa();
const root_dir = path.dirname(require.main.filename);
staticApp.use(serve(root_dir + '/static', { maxage: 60 * 1000 }));
staticApp.use(mount('/lib/vue', serve(root_dir + '/node_modules/vue/dist/', { maxage: 60 * 1000 })));
staticApp.use(mount('/lib/vue-material', serve(root_dir + '/node_modules/vue-material/dist/', { maxage: 60 * 1000 })));
staticApp.use(mount('/lib/vue-router', serve(root_dir + '/node_modules/vue-router/dist/', { maxage: 60 * 1000 })));
staticApp.use(mount('/lib/socket.io', serve(root_dir + '/node_modules/socket.io-client/dist/', { maxage: 60 * 1000 })));
staticApp.use(mount('/lib/roboto', serve(root_dir + '/node_modules/roboto-fontface/css/roboto/', { maxage: 60 * 1000 })));
staticApp.use(mount('/lib/material-icons-font', serve(root_dir + '/node_modules/material-icons-font/', { maxage: 60 * 1000 })));
module.exports = staticApp;
// api.js
const Router = require('koa-router');
const house = require('./house').controller;
const router = new Router();
router.get('/rooms', house.list_rooms);
router.get('/rooms/:name', house.room);
module.exports = router;
我在膝关节炎(1.0)中使用了这样的代码:
你能简化一下吗?例如,静态位是必要的吗?你在为静态资源服务吗?中间件是否正在越过这一点?@akaphenom所有静态资源似乎都可以顺利交付。首先,我想使用nginx托管静态部分,但是没有';我似乎也不能通过插座。是的,我已经尝试在nginx的配置中设置套接字传递所需的值。在基本工作正常之前,我不会使服务器复杂化(不要引入nginx)。老实说,我没有看到任何明显的错误。我假设您没有在socket conenction上获得控制台日志消息?客户端位是什么样子?@akaphenom Yup,正是这个+在客户端上,io()对象返回“connected:false”