Okay. also versuche ich zu erreichen, socket.io in alle meine Express-Routen zu bekommen.Socket.io in Node.js Backend-Routen
ein Teil meines Codes:
var port = process.env.PORT || 3000; // set our port
var server = app.listen(port);
var io = require('socket.io')(server);
app.io = io;
exports.io = io;
dann nenne ich es wie folgt in andere Datei.
var app = require('../../server');
var io = app.io;
function hijack(user,boatid) {
console.log("????");
console.log(user);
app.io.sockets.emit("myevent",{ test: 22});
var userid = user._id;
console.log(user);
}
module.exports = {
hijack : hijack(app),
};
Aber wie es scheint, Benutzerparameter innerhalb Hijack-Funktion nun von der App besetzt ist, und genau dann, wenn ich einen exstra Parameter hinzuzufügen, es nicht noch die Benutzerparameter wissen, wie in Berufung in der Hauptdatei durch die folgende:
var ships_model = require('./app/gamemodels/ship_model.js');
ships_model.hijack(req.user, req.body.id).then(function (result) {
res.json(result);
});
Bitte beachten Sie: ich habe versucht, die IO wie folgt zu injizieren:
var ships_model = require('./app/gamemodels/ship_model.js')(io);
sondern dass gerade produziert Fehler.
ein anderes Beispiel:
Ist es möglich, eine Buchse emittieren rufen innerhalb einiger Funktionen zu machen? Ich bin nur daran interessiert, Daten an die Client-Seite zu senden.
Oder wie Schieber serverseitig funktioniert, könnte das auch mit Buchse getan werden?
die Client-Anforderung ist als Server
var bankfactory = require(path.resolve('./modules/articles/server/factory/user_factory.js'));
app.post('/api/bank', function (req, res) {
bankfactory.bank_inn(req.user._id,amount).then(function (bankresult) {
res.json(bankresult);
});
});
bankfactory seitig folgt:
exports.bank_inn = bank_inn;
function bank_inn(playerid,amount) {
if (playerid == 1) {
} else {
// possible to make a emit call to the client here?
//emit("newevent,datahere)
}
}
Hinweis zwei: ich in eventemiters schon gesucht, aber ohne Ergebnisse.
Also, wie kann ich erreichen, socket.emit innerhalb meiner Express-Routen aufzurufen?
Zusätzliche Strukturcode:
Hauptdatei:
var ships_model = require('./app/gamemodels/ship_model.js');
ships_model.createShipInterface(req.user._id).then(function (response) {
res.json(response);
});
ship_model Datei haben die folgende Struktur:
module.exports = {
getShips: getShips(),
createShipInterface : createShipInterface,
allowedLocationsShips : allowedLocationsShips,
startMissionInterface : startMissionInterface,
deligateShipMovements: deligateShipMovements,
upgradeBoat : upgradeBoat,
deletedBoats: deletedBoats,
hijackSession : hijackSession,
boats_to_hijack : boats_to_hijack,
avaliable_boats : avaliable_boats,
createHijackSession : createHijackSession,
public_hijack : public_hijack,
joinHijackSession : joinHijackSession,
leavehijack : leavehijack,
sendMessageToMembers : sendMessageToMembers,
KickMember : KickMember,
togglePublic : togglePublic,
getHangar : getHangar,
hijack : hijack(app),
getHangarSession: getHangarSession,
updateUserLocation : updateUserLocation,
};
Sie müssen den Socket-Verbindungsaufbau in separaten trennen jetzt gibt es viel des Codes in der gleichen Datei [JSbin] (http://jsbin.com/huyimuketi/edit?js,console) –