gpt4 book ai didi

javascript - Node.js模块之间的通信

转载 作者:行者123 更新时间:2023-12-03 06:25:21 25 4
gpt4 key购买 nike

我在一个文件中有一个express模块​​来注册用户名,在另一个文件中有一个socket.io模块来创建聊天。将用户名发送到套接字模块的最佳方式是什么?

服务器.js

var express = require('express');
app = express();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var morgan = require('morgan');
var wagner = require('wagner-core');
var bodyParser = require('body-parser');

var port = process.env.PORT || 8080;

var name = [];

app.use(morgan('dev'));
app.use(express.static('public'));

app.use(bodyParser.urlencoded({'extended':'true'})); // parse application/x-www-form-urlencoded
app.use(bodyParser.json()); // parse application/json
app.use(bodyParser.json({ type: 'application/vnd.api+json' })); // parse application/vnd.api+json as json

var dependencies = require("./app/dependencies.js")(wagner);

require('./app/routes.js')(app,wagner);

require('./app/socketio.js')(io,wagner);

http.listen(port,function(){
console.log('listening on *:'+port);
});

./app/routes.js

module.exports = function(app,wagner) {

// api ------------------------------------------------------------------

app.post('/api/user', function(req, res) {
console.log(req.body);
// name.push(req.body.name);
res.json({ message: 'from post' });
wagner.invoke(function (UserName){
UserName = "mjt";
});
});
};

./app/socketio.js

module.exports = function (io,wagner) {

io.on('connection', function(socket){
var userName = wagner.invoke(function(UserName) {
console.log(UserName);
});

console.log('a user connected');
io.emit('user connected', "connected");

socket.on('chat message', function(msg) {
console.log('message: ' + msg);
io.emit('chat message', msg);
});

socket.on('disconnect',function () {
console.log('user disconnect');
io.emit('user disconnected', "disconnected");
});
});
}

最佳答案

找到了一种通过使模块单例来传递数据的方法,这可能不是最好的解决方案,但我可以实现我想要的

./app/socketio.js

var socketio = function () {}

socketio.prototype.users = [];

socketio.prototype.start = function(io){
console.log("from start");
var that = this.users;
var people = {};
io.on('connection', function(socket){
console.log(that);

console.log('a user connected');
io.emit('user connected', "connected");

socket.on('chat message', function(msg) {
console.log('message: ' + msg);
io.emit('chat message', msg);
});

socket.on('disconnect',function () {
console.log('user disconnect');
io.emit('user disconnected', "disconnected");
});
});
}

socketio.prototype.updateUser = function (user) {
console.log(user);

this.users.push(user);
console.log(this.users);
}
module.exports = exports = new socketio();

服务器.js

var express = require('express');
app = express();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var morgan = require('morgan');
var wagner = require('wagner-core');
var bodyParser = require('body-parser');

var port = process.env.PORT || 8080;


var name = [];

var socketIo = require('./app/socketio.js');

var startio = socketIo.start(io);
socketIo.updateUser("hey");
socketIo.updateUser("there");

app.use(morgan('dev'));
app.use(express.static('public'));

app.use(bodyParser.urlencoded({'extended':'true'})); // parse application/x-www-form-urlencoded
app.use(bodyParser.json()); // parse application/json
app.use(bodyParser.json({ type: 'application/vnd.api+json' })); // parse application/vnd.api+json as json

var dependencies = require("./app/dependencies.js")(wagner);

require('./app/routes.js')(app,wagner,socketIo);

http.listen(port,function(){
console.log('listening on *:'+port);
});

希望这对像我这样有需要的人有帮助,请提出更好的方法,谢谢

关于javascript - Node.js模块之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38680583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com