mirror of
https://github.com/exane/not-gwent-online
synced 2026-02-03 04:25:00 +00:00
replace socketcluster with socket.io
This commit is contained in:
@@ -46,7 +46,7 @@ var Battle = (function(){
|
||||
this.on("AfterPlace", this.checkAbilityOnAfterPlace)*/
|
||||
|
||||
|
||||
this.channel = this.socket.subscribe(this._id);
|
||||
//this.channel = this.socket.subscribe(this._id);
|
||||
this.p1 = Battleside(this._user1.getName(), 0, this, this._user1);
|
||||
this.p2 = Battleside(this._user2.getName(), 1, this, this._user2);
|
||||
this.p1.foe = this.p2;
|
||||
@@ -120,27 +120,33 @@ var Battle = (function(){
|
||||
this._update(this.p2);
|
||||
}
|
||||
|
||||
r._update = function(p){
|
||||
r.updateSelf = function(side) {
|
||||
this._update(side, true);
|
||||
}
|
||||
|
||||
r._update = function(p, isPrivate){
|
||||
isPrivate = isPrivate || false;
|
||||
p.send("update:info", {
|
||||
info: p.getInfo(),
|
||||
leader: p.field[Card.TYPE.LEADER].get()[0]
|
||||
})
|
||||
}, isPrivate)
|
||||
p.send("update:hand", {
|
||||
cards: JSON.stringify(p.hand.getCards())
|
||||
});
|
||||
},isPrivate);
|
||||
p.send("update:fields", {
|
||||
close: p.field[Card.TYPE.CLOSE_COMBAT].getInfo(),
|
||||
ranged: p.field[Card.TYPE.RANGED].getInfo(),
|
||||
siege: p.field[Card.TYPE.SIEGE].getInfo(),
|
||||
weather: p.field[Card.TYPE.WEATHER].getInfo()
|
||||
})
|
||||
}, isPrivate);
|
||||
}
|
||||
|
||||
r.send = function(event, data){
|
||||
this.channel.publish({
|
||||
/*this.channel.publish({
|
||||
event: event,
|
||||
data: data
|
||||
});
|
||||
});*/
|
||||
io.sockets.in(this._id).emit(event, data);
|
||||
}
|
||||
|
||||
r.runEvent = function(eventid, ctx, args, uid){
|
||||
|
||||
@@ -620,7 +620,7 @@ Battleside = (function(){
|
||||
|
||||
this.send("redraw:cards", null, true);
|
||||
|
||||
var h1 = this.receive("redraw:reDrawCard", function(data){
|
||||
this.receive("redraw:reDrawCard", function(data){
|
||||
var id = data.cardID;
|
||||
if(!left) return;
|
||||
left--;
|
||||
@@ -633,15 +633,16 @@ Battleside = (function(){
|
||||
self.send("redraw:close", null, true);
|
||||
console.log("redraw finished");
|
||||
deferred.resolve("done");
|
||||
self.socket.off("redraw:reDrawCard", h1);
|
||||
//self.socket.off("redraw:reDrawCard", h1);
|
||||
}
|
||||
self.update(self);
|
||||
/*self.update(self);*/
|
||||
self.battle.updateSelf(self);
|
||||
})
|
||||
|
||||
var h2 = this.receive("redraw:close_client", function() {
|
||||
this.receive("redraw:close_client", function() {
|
||||
console.log("redraw finished!");
|
||||
deferred.resolve("done");
|
||||
self.socket.off("redraw:close_client", h2);
|
||||
//self.socket.off("redraw:close_client", h2);
|
||||
})
|
||||
|
||||
return deferred;
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
var Promise = require("promise");
|
||||
|
||||
var Matchmaker = (function(){
|
||||
var Matchmaker = function(connections){
|
||||
var Matchmaker = function(){
|
||||
if(!(this instanceof Matchmaker)){
|
||||
return (new Matchmaker(connections));
|
||||
return (new Matchmaker());
|
||||
}
|
||||
/**
|
||||
* constructor here
|
||||
@@ -23,47 +23,47 @@ var Matchmaker = (function(){
|
||||
r._queue = null;
|
||||
r._connections = null;
|
||||
|
||||
r.findOpponent = function(user){
|
||||
var self = this;
|
||||
|
||||
var promise = new Promise(function(resolve){
|
||||
self._queue.push(user);
|
||||
self._checkForOpponent(resolve);
|
||||
});
|
||||
return promise;
|
||||
}
|
||||
|
||||
r._checkForOpponent = function(resolve){
|
||||
if(this._queue.length <= 1) return;
|
||||
console.log(this._queue.length);
|
||||
if(!this._checkConnections()) return;
|
||||
this._match(this._queue[0], this._queue[1], resolve);
|
||||
}
|
||||
|
||||
r._match = function(p1, p2, resolve){
|
||||
this._queue.splice(0, 2);
|
||||
var roomID = p1.id + p2.id;
|
||||
p1.send("get:opponent", {socketID: p2.getID()});
|
||||
p2.send("get:opponent", {socketID: p1.getID()});
|
||||
|
||||
p1.joinRoom(roomID);
|
||||
p2.joinRoom(roomID);
|
||||
|
||||
resolve(p1, p2, roomID);
|
||||
}
|
||||
|
||||
r._checkConnections = function() {
|
||||
var res = true;
|
||||
var self = this;
|
||||
|
||||
this._queue.forEach(function(user, index) {
|
||||
if(!self._connections.hasUser(user)) {
|
||||
self._queue.splice(index, 1);
|
||||
res = false;
|
||||
r.removeFromQueue = function(user){
|
||||
for(var i = 0; i < this._queue.length; i++) {
|
||||
var u = this._queue[i];
|
||||
if(u.getID() === user.getID()) {
|
||||
user._inQueue = false;
|
||||
return this._queue.splice(i, 1);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return res;
|
||||
r.findOpponent = function(user){
|
||||
var c = connections;
|
||||
|
||||
var found = this._checkForOpponent();
|
||||
|
||||
if(found){
|
||||
|
||||
var room = Room();
|
||||
c.roomCollection[room.getID()] = room;
|
||||
room.join(user);
|
||||
room.join(found);
|
||||
user._inQueue = false;
|
||||
found._inQueue = false;
|
||||
return room;
|
||||
}
|
||||
|
||||
this._getInQueue(user);
|
||||
}
|
||||
|
||||
r._getInQueue = function(user){
|
||||
console.log(user.getName() + " joined in queue");
|
||||
this._queue.push(user);
|
||||
user._inQueue = true;
|
||||
}
|
||||
|
||||
|
||||
r._checkForOpponent = function(){
|
||||
if(!this._queue.length) return null;
|
||||
var foe = this._queue.splice(0, 1)[0];
|
||||
foe._inQueue = false;
|
||||
return foe;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -2,9 +2,9 @@ var shortid = require("shortid");
|
||||
var Battle = require("./Battle");
|
||||
|
||||
var Room = (function(){
|
||||
var Room = function(scServer){
|
||||
var Room = function(){
|
||||
if(!(this instanceof Room)){
|
||||
return (new Room(scServer));
|
||||
return (new Room());
|
||||
}
|
||||
/**
|
||||
* constructor here
|
||||
@@ -14,7 +14,7 @@ var Room = (function(){
|
||||
this._id = shortid.generate();
|
||||
this._users = [];
|
||||
this._ready = {};
|
||||
this.socket = scServer.global;
|
||||
//this.socket = scServer.global;
|
||||
|
||||
|
||||
console.log("room created: " + this.getID());
|
||||
@@ -40,6 +40,8 @@ var Room = (function(){
|
||||
if(this._users.length >= 2) return;
|
||||
this._users.push(user);
|
||||
user.addRoom(this);
|
||||
user.socket.join(this.getID());
|
||||
user.send("response:joinRoom", this.getID());
|
||||
|
||||
if(!this.isOpen()){
|
||||
this.initBattle();
|
||||
@@ -55,7 +57,7 @@ var Room = (function(){
|
||||
}
|
||||
|
||||
r.initBattle = function(){
|
||||
this._battle = Battle(this._id, this._users[0], this._users[1], this.socket);
|
||||
this._battle = Battle(this._id, this._users[0], this._users[1], io);
|
||||
this._users[0].send("init:battle", {side: "p1"});
|
||||
this._users[1].send("init:battle", {side: "p2"});
|
||||
}
|
||||
|
||||
@@ -1,11 +1,8 @@
|
||||
/*
|
||||
var app = require('http').createServer();
|
||||
global.io = require("socket.io")(app);
|
||||
var User = require("./User");
|
||||
/*var app = require('http').createServer();
|
||||
global.io = require("socket.io")(app);*/
|
||||
/*var User = require("./User");
|
||||
var Connections = require("./Connections");
|
||||
var Battle = require("./Battle");
|
||||
var Npc = require("./Npc");
|
||||
var Room = require("./Room");
|
||||
var Room = require("./Room");*/
|
||||
|
||||
|
||||
var Socket = (function(){
|
||||
@@ -13,39 +10,28 @@ var Socket = (function(){
|
||||
if(!(this instanceof Socket)){
|
||||
return (new Socket());
|
||||
}
|
||||
*/
|
||||
/**
|
||||
/**
|
||||
* constructor here
|
||||
*//*
|
||||
|
||||
*/
|
||||
this.connections = Connections();
|
||||
*/
|
||||
/*
|
||||
this.matchmaker = Matchmaker(this.connections);
|
||||
*//*
|
||||
|
||||
this.roomCollection = {};
|
||||
app.listen(this.port);
|
||||
this.io = io;
|
||||
this._events();
|
||||
};
|
||||
var r = Socket.prototype;
|
||||
*/
|
||||
/**
|
||||
/**
|
||||
* methods && properties here
|
||||
* r.property = null;
|
||||
* r.getProperty = function() {...}
|
||||
*//*
|
||||
|
||||
*/
|
||||
r.io = null;
|
||||
r.port = 16918;
|
||||
r.connections = null;
|
||||
r.roomCollection = null;
|
||||
*/
|
||||
/*
|
||||
/*
|
||||
r.matchmaker = null;
|
||||
*//*
|
||||
|
||||
*/
|
||||
|
||||
r._events = function(){
|
||||
var self = this;
|
||||
@@ -102,4 +88,4 @@ var Socket = (function(){
|
||||
return Socket;
|
||||
})();
|
||||
|
||||
module.exports = Socket;*/
|
||||
module.exports = Socket;
|
||||
@@ -12,6 +12,8 @@ var User = (function(){
|
||||
this._rooms = [];
|
||||
this._id = socket.id;
|
||||
this.generateName();
|
||||
|
||||
this._events();
|
||||
};
|
||||
var r = User.prototype;
|
||||
/**
|
||||
@@ -23,7 +25,7 @@ var User = (function(){
|
||||
r._id = null;
|
||||
r._name = null;
|
||||
r._rooms = null;
|
||||
r._searching = false;
|
||||
r._inQueue = false;
|
||||
r.socket = null;
|
||||
r.disconnected = false;
|
||||
|
||||
@@ -31,13 +33,13 @@ var User = (function(){
|
||||
return this._id;
|
||||
}
|
||||
|
||||
r.joinRoom = function(roomid){
|
||||
/*r.joinRoom = function(roomid){
|
||||
var self = this;
|
||||
/*this.socket.on(roomid, function(d) {
|
||||
*//*this.socket.on(roomid, function(d) {
|
||||
var event = d.event, data = d.data;
|
||||
self.socket.on(event, data);
|
||||
});*/
|
||||
}
|
||||
});*//*
|
||||
}*/
|
||||
|
||||
r.send = function(event, data, room){
|
||||
room = room || null;
|
||||
@@ -45,12 +47,12 @@ var User = (function(){
|
||||
if(!room){
|
||||
this.socket.emit(event, data);
|
||||
}
|
||||
else {/*
|
||||
this.socket.to(room).emit(event, data);*/
|
||||
this.socket.global.publish(room, {
|
||||
else {
|
||||
this.socket.to(room).emit(event, data);
|
||||
/*this.socket.global.publish(room, {
|
||||
event: event,
|
||||
data: data
|
||||
})
|
||||
})*/
|
||||
}
|
||||
}
|
||||
|
||||
@@ -102,6 +104,8 @@ var User = (function(){
|
||||
var self = this;
|
||||
this.disconnected = true;
|
||||
|
||||
matchmaking.removeFromQueue(this);
|
||||
|
||||
this._rooms.forEach(function(room) {
|
||||
room.leave(self);
|
||||
if(!room.hasUser()) {
|
||||
@@ -113,6 +117,57 @@ var User = (function(){
|
||||
this.cleanUp();
|
||||
}
|
||||
|
||||
r._events = function() {
|
||||
var socket = this.socket;
|
||||
var self = this;
|
||||
|
||||
socket.on("request:name", function(data){
|
||||
if(data && data.name){
|
||||
self.setName(data.name);
|
||||
}
|
||||
socket.emit("response:name", {name: self.getName()});
|
||||
})
|
||||
|
||||
/*socket.on("request:createRoom", function(){
|
||||
var room = Room();
|
||||
connections.roomCollection[room.getID()] = room;
|
||||
room.join(self);
|
||||
console.log("room %s created by %s", room.getID(), self.getName());
|
||||
self.send("response:createRoom", room.getID());
|
||||
})
|
||||
|
||||
socket.on("request:joinRoom", function(){
|
||||
console.log("joinroom");
|
||||
var interval = setInterval(function(){
|
||||
for(var key in connections.roomCollection) {
|
||||
var room = connections.roomCollection[key];
|
||||
if(!room.isOpen()) continue;
|
||||
room.join(self);
|
||||
clearInterval(interval);
|
||||
console.log("user %s joined room %s", self.getName(), room.getID());
|
||||
self.send("response:joinRoom", room.getID());
|
||||
}
|
||||
}, 1000);
|
||||
})*/
|
||||
|
||||
socket.on("request:matchmaking", function() {
|
||||
if(self._inQueue) return;
|
||||
matchmaking.findOpponent(self);
|
||||
});
|
||||
|
||||
socket.on("request:gameLoaded", function(data){
|
||||
console.log(data);
|
||||
connections.roomCollection[data._roomID].setReady(self);
|
||||
})
|
||||
|
||||
socket.on("set:deck", function(data) {
|
||||
console.log(data);
|
||||
if(data && data.deck){
|
||||
self.setDeck(data.deck);
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
return User;
|
||||
})();
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
var argv = require('minimist')(process.argv.slice(2));
|
||||
var SocketCluster = require('socketcluster').SocketCluster;
|
||||
/*var SocketCluster = require('socketcluster').SocketCluster;*/
|
||||
|
||||
/*
|
||||
var socketCluster = new SocketCluster({
|
||||
workers: Number(argv.w) || 1,
|
||||
stores: Number(argv.s) || 1,
|
||||
@@ -10,4 +11,34 @@ var socketCluster = new SocketCluster({
|
||||
storeController: __dirname + '/store.js',
|
||||
socketChannelLimit: 100,
|
||||
rebootWorkerOnCrash: argv['auto-reboot'] != false
|
||||
});
|
||||
});*/
|
||||
|
||||
global.connections = require("./Connections")();
|
||||
|
||||
global.matchmaking = require("./Matchmaker")();
|
||||
|
||||
global.Room = require("./Room");
|
||||
|
||||
global.User = require("./User");
|
||||
|
||||
/*global.Socket = require("./Socket");*/
|
||||
|
||||
|
||||
var app = require('http').createServer();
|
||||
global.io = require("socket.io")(app);
|
||||
|
||||
app.listen(16918);
|
||||
|
||||
io.on("connection", function(socket) {
|
||||
var user;
|
||||
connections.add(user = User(socket));
|
||||
console.log("new user ", user.getName());
|
||||
|
||||
socket.on("disconnect", function() {
|
||||
connections.remove(user);
|
||||
user.disconnect();
|
||||
console.log("user ", user.getName(), " disconnected");
|
||||
user = null;
|
||||
})
|
||||
|
||||
})
|
||||
Reference in New Issue
Block a user