WebSocket protocol support can now be configured and is only used in the dedicated server.

This commit is contained in:
lotodore
2013-10-03 00:41:07 +02:00
parent d23cc87c93
commit 04abfb658d
7 changed files with 23 additions and 9 deletions
+3 -1
View File
@@ -64,7 +64,7 @@ ConfigFile::ConfigFile(char *argv0, bool readonly) : noWriteAccess(readonly)
myConfigState = OK; myConfigState = OK;
// !!!! Revisionsnummer der Configdefaults !!!!! // !!!! Revisionsnummer der Configdefaults !!!!!
configRev = 100; configRev = 101;
//standard defaults //standard defaults
logOnOffDefault = "1"; logOnOffDefault = "1";
@@ -220,7 +220,9 @@ ConfigFile::ConfigFile(char *argv0, bool readonly) : noWriteAccess(readonly)
configList.push_back(ConfigInfo("ServerPassword", CONFIG_TYPE_STRING, "")); configList.push_back(ConfigInfo("ServerPassword", CONFIG_TYPE_STRING, ""));
configList.push_back(ConfigInfo("ServerUseIpv6", CONFIG_TYPE_INT, "0")); configList.push_back(ConfigInfo("ServerUseIpv6", CONFIG_TYPE_INT, "0"));
configList.push_back(ConfigInfo("ServerUseSctp", CONFIG_TYPE_INT, "0")); configList.push_back(ConfigInfo("ServerUseSctp", CONFIG_TYPE_INT, "0"));
configList.push_back(ConfigInfo("ServerUseWebSocket", CONFIG_TYPE_INT, "0"));
configList.push_back(ConfigInfo("ServerPort", CONFIG_TYPE_INT, "7234")); configList.push_back(ConfigInfo("ServerPort", CONFIG_TYPE_INT, "7234"));
configList.push_back(ConfigInfo("ServerWebSocketPort", CONFIG_TYPE_INT, "7233"));
configList.push_back(ConfigInfo("ServerUsePutAvatars", CONFIG_TYPE_INT, "0")); configList.push_back(ConfigInfo("ServerUsePutAvatars", CONFIG_TYPE_INT, "0"));
configList.push_back(ConfigInfo("ServerPutAvatarsAddress", CONFIG_TYPE_STRING, "")); configList.push_back(ConfigInfo("ServerPutAvatarsAddress", CONFIG_TYPE_STRING, ""));
configList.push_back(ConfigInfo("ServerPutAvatarsUser", CONFIG_TYPE_STRING, "")); configList.push_back(ConfigInfo("ServerPutAvatarsUser", CONFIG_TYPE_STRING, ""));
+4 -1
View File
@@ -64,7 +64,10 @@ enum ServerMode {
enum ServerTransportProtocol { enum ServerTransportProtocol {
TRANSPORT_PROTOCOL_TCP = 1, TRANSPORT_PROTOCOL_TCP = 1,
TRANSPORT_PROTOCOL_SCTP = 2, TRANSPORT_PROTOCOL_SCTP = 2,
TRANSPORT_PROTOCOL_TCP_SCTP = 3 TRANSPORT_PROTOCOL_TCP_SCTP = 3,
TRANSPORT_PROTOCOL_WEBSOCKET = 4,
TRANSPORT_PROTOCOL_TCP_WEBSOCKET = 5,
TRANSPORT_PROTOCOL_TCP_SCTP_WEBSOCKET = 7
}; };
enum GameState { enum GameState {
+3 -2
View File
@@ -78,7 +78,7 @@ ServerManager::~ServerManager()
} }
void void
ServerManager::Init(unsigned serverPort, bool ipv6, ServerTransportProtocol proto, const string &logDir) ServerManager::Init(unsigned serverPort, unsigned websocketPort, bool ipv6, int proto, const string &logDir)
{ {
GetLobbyThread().Init(logDir); GetLobbyThread().Init(logDir);
@@ -93,9 +93,10 @@ ServerManager::Init(unsigned serverPort, bool ipv6, ServerTransportProtocol prot
sctpAcceptHelper->Listen(serverPort, ipv6, logDir, m_lobbyThread); sctpAcceptHelper->Listen(serverPort, ipv6, logDir, m_lobbyThread);
m_acceptHelperPool.push_back(sctpAcceptHelper); m_acceptHelperPool.push_back(sctpAcceptHelper);
}*/ }*/
if (proto & TRANSPORT_PROTOCOL_WEBSOCKET)
{ {
boost::shared_ptr<ServerAcceptInterface> webAcceptHelper(new ServerAcceptWebHelper(GetGui(), m_ioService)); boost::shared_ptr<ServerAcceptInterface> webAcceptHelper(new ServerAcceptWebHelper(GetGui(), m_ioService));
webAcceptHelper->Listen(7233, true, logDir, m_lobbyThread); webAcceptHelper->Listen(websocketPort, ipv6, logDir, m_lobbyThread);
m_acceptHelperPool.push_back(webAcceptHelper); m_acceptHelperPool.push_back(webAcceptHelper);
} }
} }
+2 -2
View File
@@ -52,7 +52,7 @@ ServerManagerIrc::~ServerManagerIrc()
} }
void void
ServerManagerIrc::Init(unsigned serverPort, bool ipv6, ServerTransportProtocol proto, const string &logDir) ServerManagerIrc::Init(unsigned serverPort, unsigned websocketPort, bool ipv6, int proto, const string &logDir)
{ {
boost::shared_ptr<IrcThread> tmpIrcAdminThread; boost::shared_ptr<IrcThread> tmpIrcAdminThread;
boost::shared_ptr<IrcThread> tmpIrcLobbyThread; boost::shared_ptr<IrcThread> tmpIrcLobbyThread;
@@ -83,7 +83,7 @@ ServerManagerIrc::Init(unsigned serverPort, bool ipv6, ServerTransportProtocol p
m_adminBot->Init(m_lobbyThread, tmpIrcAdminThread, myConfig.readConfigString("CacheDir")); m_adminBot->Init(m_lobbyThread, tmpIrcAdminThread, myConfig.readConfigString("CacheDir"));
m_lobbyBot->Init(m_lobbyThread, tmpIrcLobbyThread); m_lobbyBot->Init(m_lobbyThread, tmpIrcLobbyThread);
ServerManager::Init(serverPort, ipv6, proto, logDir); ServerManager::Init(serverPort, websocketPort, ipv6, proto, logDir);
} }
void void
+1 -1
View File
@@ -54,7 +54,7 @@ public:
virtual ~ServerManager(); virtual ~ServerManager();
// Set the parameters. // Set the parameters.
virtual void Init(unsigned serverPort, bool ipv6, ServerTransportProtocol proto, const std::string &logDir); virtual void Init(unsigned serverPort, unsigned websocketPort, bool ipv6, int proto, const std::string &logDir);
// Main start function. // Main start function.
virtual void RunAll(); virtual void RunAll();
+1 -1
View File
@@ -45,7 +45,7 @@ public:
virtual ~ServerManagerIrc(); virtual ~ServerManagerIrc();
// Set the parameters. // Set the parameters.
virtual void Init(unsigned serverPort, bool ipv6, ServerTransportProtocol proto, const std::string &logDir); virtual void Init(unsigned serverPort, unsigned websocketPort, bool ipv6, int proto, const std::string &logDir);
// Main start function. // Main start function.
virtual void RunAll(); virtual void RunAll();
+9 -1
View File
@@ -330,10 +330,18 @@ void Session::startNetworkServer(bool dedicated)
myNetServer = ServerManagerFactory::CreateServerManager(*myConfig, *myGui, mode, *myAvatarManager); myNetServer = ServerManagerFactory::CreateServerManager(*myConfig, *myGui, mode, *myAvatarManager);
int protocol = TRANSPORT_PROTOCOL_TCP;
if (dedicated && myConfig->readConfigInt("ServerUseWebSocket") == 1) {
protocol |= TRANSPORT_PROTOCOL_WEBSOCKET;
}
if (myConfig->readConfigInt("ServerUseSctp") == 1) {
protocol |= TRANSPORT_PROTOCOL_SCTP;
}
myNetServer->Init( myNetServer->Init(
myConfig->readConfigInt("ServerPort"), myConfig->readConfigInt("ServerPort"),
myConfig->readConfigInt("ServerWebSocketPort"),
myConfig->readConfigInt("ServerUseIpv6") == 1, myConfig->readConfigInt("ServerUseIpv6") == 1,
myConfig->readConfigInt("ServerUseSctp") == 1 ? TRANSPORT_PROTOCOL_TCP_SCTP : TRANSPORT_PROTOCOL_TCP, protocol,
myQtToolsInterface->stringFromUtf8(myConfig->readConfigString("LogDir")) myQtToolsInterface->stringFromUtf8(myConfig->readConfigString("LogDir"))
); );