Node.js 带有express.js和socket.io的面向对象风格应用程序
我正在node中构建一个应用程序,使用express简化事情,使用socket.io进行套接字操作 因此,当我在编写代码时,我意识到它是可行的,但并不是最好和优雅的解决方案 我想做的唯一一件事是包装套接字事件的所有代码,然后在多个页面请求中重用,因此: app.js 但是,如果我想将相同的方法分配给Node.js 带有express.js和socket.io的面向对象风格应用程序,node.js,oop,express,socket.io,Node.js,Oop,Express,Socket.io,我正在node中构建一个应用程序,使用express简化事情,使用socket.io进行套接字操作 因此,当我在编写代码时,我意识到它是可行的,但并不是最好和优雅的解决方案 我想做的唯一一件事是包装套接字事件的所有代码,然后在多个页面请求中重用,因此: app.js 但是,如果我想将相同的方法分配给/foo和/bar文件,会发生什么 i、 我需要尽可能以模块化或面向对象的方式获得它 有一种模式可以做到这一点?您在这里所做的只是在有人发出页面请求后将事件侦听器附加到socket.io。之后的每一个
/foo
和/bar
文件,会发生什么
i、 我需要尽可能以模块化或面向对象的方式获得它
有一种模式可以做到这一点?您在这里所做的只是在有人发出页面请求后将事件侦听器附加到socket.io。之后的每一个请求都会附加新的事件侦听器,当您在每次有人发出页面请求时使用新的事件侦听器阻塞服务器时,您的服务器慢慢开始耗尽内存。在路由处理程序中放入socket.io代码是没有意义的。看看这个:
套接字通常与路由分开,让事件侦听器在路由中侦听websocket上的连接并监听HTTP连接是没有意义的。所以,您能举个例子吗?不,不太可能,因为不需要,websocket有自己的连接,因此,您不应该将这些连接的事件处理程序放在等待HTTP连接的事件处理程序中。把插座放在app.Get外面,我的答案帮你了吗?
var express = require('express')
, io;
var app = express()
, PORT = 7777;
io = require('socket.io').listen(app.listen(PORT));
app.get("/", function ( req, res ) {
io.socket.on('connection', function ( socket ) {
socket.on('user', function () {
});
socket.on('message', function () {
});
socket.on('getConversation', function ( socket ) {
});
});
res.render('index');
});