static void Main(string[] args) { _rand = new Random(Environment.TickCount); SslConfig sslConfig; TcpConfig tcpConfig = new TcpConfig(true, 5000, 20000); Console.WriteLine("Setting up secure server"); sslConfig = new SslConfig(true, "cert.pfx", "", SslProtocols.Tls12); _webServer = new SimpleWebServer(10000, tcpConfig, 16 * 1024, 3000, sslConfig); _webServer.Start(Constants.GAME_PORT); Console.WriteLine("Server started"); _webServer.onConnect += WebServerOnConnect; _webServer.onData += WebServerOnData; _webServer.onDisconnect += WebServerOnDisconnect; Timer stateUpdateTimer = new Timer(1f / Constants.SERVER_TICKRATE * 1000); stateUpdateTimer.Elapsed += StateUpdateTimerOnElapsed; stateUpdateTimer.AutoReset = true; stateUpdateTimer.Enabled = true; while (!Console.KeyAvailable) { _webServer.ProcessMessageQueue(); switch (_currentState) { case GameState.Waiting: { if (_connectedIds.Count >= 2) { _currentState = GameState.Begin; SendStateUpdate(_currentState); } break; } case GameState.Begin: { // Set timer to go to builder state Timer beginTimer = new Timer(SECONDS_WAITING_IN_BEGIN * 1000); beginTimer.Elapsed += delegate(Object source, ElapsedEventArgs e) { _currentState = GameState.Builder; SendStateUpdate(_currentState); }; break; } case GameState.Builder: { } } } Console.WriteLine("Closing server"); _webServer.Stop(); }
public ThriftServerDef( INiftyProcessor processor, TProtocolFactory protocolFactory, String name = null, String host = null, int serverPort = 8080, long maxFrameSize = DefaultMaxFrameSize, int queuedResponseLimit = 16, int maxConnections = int.MaxValue, IThriftFrameCodecFactory thriftFrameCodecFactory = null, TimeSpan?clientIdleTimeout = null, TimeSpan?taskTimeout = null, TimeSpan?queueTimeout = null, SslConfig sslConfig = null) : this((processor == null ? null : new DelegateNiftyProcessorFactory(t => processor)), protocolFactory, name, host, serverPort, maxFrameSize, queuedResponseLimit, maxConnections, thriftFrameCodecFactory, clientIdleTimeout, taskTimeout, queueTimeout, sslConfig) { }
static void Main(string[] args) { SslConfig sslConfig; TcpConfig tcpConfig = new TcpConfig(true, 5000, 20000); Console.WriteLine("Setting up secure server"); sslConfig = new SslConfig(true, "cert.pfx", "", SslProtocols.Tls12); _webServer = new SimpleWebServer(10000, tcpConfig, 16 * 1024, 3000, sslConfig); _webServer.Start(Constants.GAME_PORT); Console.WriteLine("Server started"); _webServer.onConnect += delegate(int i) { Console.WriteLine($"Client {i} joined, sending hello"); byte[] buff = System.Text.Encoding.UTF8.GetBytes("Hello from server"); _webServer.SendOne(i, new ArraySegment <byte>(buff)); }; _webServer.onData += delegate(int i, ArraySegment <byte> data) { string msg = System.Text.Encoding.UTF8.GetString(data.Array); Console.WriteLine($"Client {i} send: {msg}"); }; while (!Console.KeyAvailable) { _webServer.ProcessMessageQueue(); } Console.WriteLine("Closing server"); _webServer.Stop(); }
public ThriftServerDef( INiftyProcessorFactory processorFactory, TProtocolFactory protocolFactory, String name = null, String host = null, int serverPort = 5858, long maxFrameSize = DefaultMaxFrameSize, int queuedResponseLimit = 16, int maxConnections = int.MaxValue, IThriftFrameCodecFactory thriftFrameCodecFactory = null, TimeSpan?clientIdleTimeout = null, TimeSpan?taskTimeout = null, TimeSpan?queueTimeout = null, SslConfig sslConfig = null ) : this(processorFactory, TDuplexProtocolFactory.FromSingleFactory(protocolFactory), name, host, serverPort, maxFrameSize, queuedResponseLimit, maxConnections, thriftFrameCodecFactory, clientIdleTimeout, taskTimeout, queueTimeout, sslConfig) { }
public ThriftServerDef( INiftyProcessorFactory processorFactory, TDuplexProtocolFactory protocolFactory, String name = null, String host = null, int serverPort = 5858, long maxFrameSize = DefaultMaxFrameSize, int queuedResponseLimit = 16, int maxConnections = int.MaxValue, IThriftFrameCodecFactory thriftFrameCodecFactory = null, TimeSpan?clientIdleTimeout = null, TimeSpan?taskTimeout = null, TimeSpan?queueTimeout = null, SslConfig sslConfig = null ) { Guard.ArgumentNotNull(protocolFactory, nameof(protocolFactory)); this.Name = String.IsNullOrWhiteSpace(name) ? ($"nifty-{Interlocked.Increment(ref _globalId)}") : name; this.Host = host; this.ServerPort = serverPort; this.MaxFrameSize = maxFrameSize; this.MaxConnections = maxConnections; this.QueuedResponseLimit = queuedResponseLimit; this.ProcessorFactory = processorFactory; this.DuplexProtocolFactory = protocolFactory; this.ClientIdleTimeout = clientIdleTimeout ?? TimeSpan.Zero; this.TaskTimeout = taskTimeout ?? TimeSpan.Zero; this.QueueTimeout = queueTimeout ?? TimeSpan.Zero; this.ThriftFrameCodecFactory = thriftFrameCodecFactory ?? new DefaultThriftFrameCodecFactory(); //this.Executor = executor ?? new DotNetty.Common.Concurrency.SingleThreadEventExecutor; //this.SecurityFactory = securityFactory; this.SslConfig = sslConfig; }
static void Main(string[] args) { SslConfig sslConfig; TcpConfig tcpConfig = new TcpConfig(true, 5000, 20000); Console.WriteLine("Setting up secure server"); sslConfig = new SslConfig(true, "cert.pfx", "", SslProtocols.Tls12); _webServer = new SimpleWebServer(10000, tcpConfig, 16 * 1024, 3000, sslConfig); _webServer.Start(Constants.GAME_PORT); Console.WriteLine("Server started"); _webServer.onConnect += WebServerOnConnect; _webServer.onData += WebServerOnData; _webServer.onDisconnect += WebServerOnDisconnect; Timer stateUpdateTimer = new Timer(1f / Constants.SERVER_TICKRATE * 1000); stateUpdateTimer.Elapsed += StateUpdateTimerOnElapsed; stateUpdateTimer.AutoReset = true; stateUpdateTimer.Enabled = true; while (!Console.KeyAvailable) { _webServer.ProcessMessageQueue(); } Console.WriteLine("Closing server"); _webServer.Stop(); }
// Start is called before the first frame update void Start() { _timeSinceLastSend = Time.time; _playerTransforms = new Dictionary <ushort, uint[]>(); _connectionIds = new List <int>(); SslConfig sslConfig; TcpConfig tcpConfig = new TcpConfig(true, 5000, 20000); if (Application.isBatchMode) { Debug.Log("Setting up secure server"); sslConfig = new SslConfig(true, "cert.pfx", "", SslProtocols.Tls12); } else { Debug.Log("Setting up non secure server"); sslConfig = new SslConfig(false, "", "", SslProtocols.Tls12); } _webServer = new SimpleWebServer(10000, tcpConfig, 16 * 1024, 3000, sslConfig); _webServer.Start(Constants.GAME_PORT); Debug.Log("Server started"); _webServer.onConnect += WebServerOnonConnect; _webServer.onData += WebServerOnonData; _webServer.onError += delegate(int i, Exception exception) { Debug.Log("Error: " + exception.Message); }; _webServer.onDisconnect += WebServerOnonDisconnect; }
static void Main(string[] args) { SslConfig sslConfig; TcpConfig tcpConfig = new TcpConfig(true, 5000, 20000); Console.WriteLine("Setting up secure server"); sslConfig = new SslConfig(true, "cert.pfx", "", SslProtocols.Tls12); }
static void Main(string[] args) { SslConfig sslConfig; TcpConfig tcpConfig = new TcpConfig(true, 5000, 20000); Console.WriteLine("Setting up secure server"); sslConfig = new SslConfig(true, "cert.pfx", "", SslProtocols.Tls12); _webServer = new SimpleWebServer(10000, tcpConfig, 16 * 1024, 3000, sslConfig); }
public ThriftServer( INiftyProcessor processor, ThriftServerConfig serverConfig, SslConfig sslConfig = null, ILoggerFactory loggerFactory = null) : this(processor, serverConfig, DefaultFrameCodecFactories, DefaultProtocolFactories, sslConfig, loggerFactory) { }
public ThriftServer( INiftyProcessor processor, int port = 0, SslConfig sslConfig = null, ILoggerFactory loggerFactory = null) : this(processor, new ThriftServerConfig() { Port = Math.Max(0, port) }, DefaultFrameCodecFactories, DefaultProtocolFactories, sslConfig, loggerFactory) { }
static void Main(string[] args) { SslConfig sslConfig; TcpConfig tcpConfig = new TcpConfig(true, 5000, 20000); Console.WriteLine("Setting up secure server"); sslConfig = new SslConfig(true, "cert.pfx", "", SslProtocols.Tls12); _webServer = new SimpleWebServer(10000, tcpConfig, 16 * 1024, 3000, sslConfig); _webServer.Start(Constants.GAME_PORT); Console.WriteLine("Server started"); _webServer.onConnect += delegate(int i) { } }
static void Main(string[] args) { SslConfig sslConfig; TcpConfig tcpConfig = new TcpConfig(true, 5000, 20000); Console.WriteLine("Setting up secure server"); sslConfig = new SslConfig(true, "cert.pfx", "", SslProtocols.Tls12); _webServer = new SimpleWebServer(10000, tcpConfig, 16 * 1024, 3000, sslConfig); _webServer.Start(Constants.GAME_PORT); Console.WriteLine("Server started"); _webServer.onConnect += delegate(int i) { Console.WriteLine($"Client {i} joined, sending hello"); byte[] buff = System.Text.Encoding.UTF8.GetBytes("Hello from server"); _webServer.SendOne(i, "Hello from server"); }; }
public ThriftServer( INiftyProcessor processor, ThriftServerConfig serverConfig, IDictionary <String, IThriftFrameCodecFactory> availableFrameCodecFactories, IDictionary <String, TDuplexProtocolFactory> availableProtocolFactories, SslConfig sslConfig = null, ILoggerFactory loggerFactory = null ) { Guard.ArgumentNotNull(serverConfig, nameof(serverConfig)); Guard.ArgumentNotNull(availableFrameCodecFactories, nameof(availableFrameCodecFactories)); Guard.ArgumentNotNull(availableProtocolFactories, nameof(availableProtocolFactories)); Guard.ArgumentCondition(availableFrameCodecFactories.ContainsKey(serverConfig.TransportName), $"No available server transport named {serverConfig.TransportName}"); Guard.ArgumentCondition(availableProtocolFactories.ContainsKey(serverConfig.ProtocolName), $"No available server protocol named {serverConfig.ProtocolName}"); _eventLocked = new ManualResetEvent(true); _logger = loggerFactory?.CreateLogger <ThriftServer>() ?? (ILogger)NullLogger.Instance; ThriftServerDef def = new ThriftServerDef( new DelegateNiftyProcessorFactory(t => processor), availableProtocolFactories[serverConfig.ProtocolName], "thrift", serverConfig.BindingAddress, serverConfig.Port, serverConfig.MaxFrameSizeBytes, serverConfig.MaxQueuedResponsesPerConnection, serverConfig.ConnectionLimit ?? int.MaxValue, availableFrameCodecFactories[serverConfig.TransportName], serverConfig.IdleConnectionTimeout, serverConfig.TaskExpirationTimeout != TimeSpan.Zero ? serverConfig.TaskExpirationTimeout : (TimeSpan?)null, serverConfig.QueueTimeout != TimeSpan.Zero ? serverConfig.QueueTimeout : (TimeSpan?)null, sslConfig ); NettyServerConfig config = new NettyServerConfig(new HashedWheelTimer(), new MultithreadEventLoopGroup(serverConfig.AcceptorThreadCount), new MultithreadEventLoopGroup(serverConfig.WorkerThreadCount), serverConfig.IOThreadCount,//20170515陈慎远临时添加 null, loggerFactory); //NettyServerConfig config = new NettyServerConfig(timer:new HashedWheelTimer(), // bossGroup: new MultithreadEventLoopGroup(serverConfig.AcceptorThreadCount), // ioThreadCount:1); _transport = new NettyServerTransport(def, config); }
/// <summary> /// 构造函数 /// </summary> /// <param name="serviceLocator">服务定位器</param> /// <param name="config">服务器配置</param> /// <param name="handlers">handlers</param> /// <param name="serviceTypes">实例对象类型</param> /// <param name="codescs">自定义codec</param> /// <param name="sslConfig"></param> /// <param name="loggerFactory">logger</param> internal ThriftyServer( IServiceLocator serviceLocator, ThriftServerConfig config, List <ThriftEventHandler> handlers, IEnumerable <Type> serviceTypes, IEnumerable <IThriftCodec> codescs, SslConfig sslConfig = null, ILoggerFactory loggerFactory = null) { this._config = config; this._handlers = handlers; this._serviceTypes = serviceTypes; this._codescs = codescs; this._sslConfig = sslConfig; this._loggerFactory = loggerFactory; this._serviceLocator = serviceLocator; this._logger = loggerFactory?.CreateLogger <ThriftyServer>() ?? (ILogger)NullLogger.Instance; }
private static void WriteSSLValue(string key, string value) { if (sslConfig == null) { sslConfig = new SslConfig(); } if (key == "CERT_FILE_LOCATION") { sslConfig.CertificateLocation = value; } if (key == "CA_FILE_LOCATION") { sslConfig.CaLocation = value; } if (key == "KEY_FILE_LOCATION") { sslConfig.KeyLocation = value; } }
static void Main(string[] args) { SslConfig sslConfig; TcpConfig tcpConfig = new TcpConfig(true, 5000, 20000); Console.WriteLine("Setting up secure server"); sslConfig = new SslConfig(true, "cert.pfx", "", SslProtocols.Tls12); _webServer = new SimpleWebServer(10000, tcpConfig, 16 * 1024, 3000, sslConfig); _webServer.Start(Constants.GAME_PORT); Console.WriteLine("Server started"); _webServer.onConnect += WebServerOnConnect; _webServer.onData += WebServerOnData; while (!Console.KeyAvailable) { _webServer.ProcessMessageQueue(); } Console.WriteLine("Closing server"); _webServer.Stop(); }
static void Main(string[] args) { _rand = new Random(Environment.TickCount); SslConfig sslConfig; TcpConfig tcpConfig = new TcpConfig(true, 5000, 20000); Console.WriteLine("Setting up secure server"); sslConfig = new SslConfig(true, "cert.pfx", "", SslProtocols.Tls12); _webServer = new SimpleWebServer(10000, tcpConfig, 16 * 1024, 3000, sslConfig); _webServer.Start(Constants.GAME_PORT); Console.WriteLine("Server started"); _webServer.onConnect += WebServerOnConnect; _webServer.onData += WebServerOnData; _webServer.onDisconnect += WebServerOnDisconnect; Timer stateUpdateTimer = new Timer(1f / Constants.SERVER_TICKRATE * 1000); stateUpdateTimer.Elapsed += StateUpdateTimerOnElapsed; stateUpdateTimer.AutoReset = true; stateUpdateTimer.Enabled = true; while (!Console.KeyAvailable) { _webServer.ProcessMessageQueue(); // GUARD, DONT DO STATE STUFF IF WE ARE WAITING if (_waitingOnStateTimer) { continue; } switch (_currentState) { case GameState.Waiting: { if (_connectedIds.Count >= 2) { _currentState = GameState.Begin; SendStateUpdate(_currentState); } break; } case GameState.Begin: { // Set timer to go to builder state Timer beginTimer = new Timer(SECONDS_WAITING_IN_BEGIN * 1000); beginTimer.AutoReset = false; beginTimer.Start(); _waitingOnStateTimer = true; beginTimer.Elapsed += delegate(Object source, ElapsedEventArgs e) { _waitingOnStateTimer = false; _movedObjects = new List <ushort>(); _currentState = GameState.Builder; SendStateUpdate(_currentState); }; break; } case GameState.Builder: { // Set timer to go to builder state Timer buildTimer = new Timer(SECONDS_WAITING_IN_BUILD * 1000); buildTimer.AutoReset = false; buildTimer.Start(); _waitingOnStateTimer = true; buildTimer.Elapsed += delegate(Object source, ElapsedEventArgs e) { _waitingOnStateTimer = false; // Reset everyones guesses foreach (PlayerData playerData in _playerDatas.Values) { playerData.guesses.Clear(); } _currentState = GameState.Search; SendStateUpdate(_currentState); }; break; } case GameState.Search: { // Set timer to go to scoring state Timer searchTimer = new Timer(SECONDS_WAITING_IN_SEARCH * 1000); searchTimer.AutoReset = false; searchTimer.Start(); _waitingOnStateTimer = true; searchTimer.Elapsed += delegate(Object source, ElapsedEventArgs e) { _waitingOnStateTimer = false; _currentState = GameState.Scoring; SendStateUpdate(_currentState); }; break; } case GameState.Scoring: { foreach (var playerPair in _playerDatas) { } } } } Console.WriteLine("Closing server"); _webServer.Stop(); }
static void Main(string[] args) { _rand = new Random(Environment.TickCount); SslConfig sslConfig; TcpConfig tcpConfig = new TcpConfig(true, 5000, 20000); Console.WriteLine("Setting up secure server"); sslConfig = new SslConfig(true, "cert.pfx", "", SslProtocols.Tls12); _webServer = new SimpleWebServer(10000, tcpConfig, 16 * 1024, 3000, sslConfig); _webServer.Start(Constants.GAME_PORT); Console.WriteLine("Server started"); _webServer.onConnect += WebServerOnConnect; _webServer.onData += WebServerOnData; _webServer.onDisconnect += WebServerOnDisconnect; Timer stateUpdateTimer = new Timer(1f / Constants.SERVER_TICKRATE * 1000); stateUpdateTimer.Elapsed += StateUpdateTimerOnElapsed; stateUpdateTimer.AutoReset = true; stateUpdateTimer.Enabled = true; while (!Console.KeyAvailable) { _webServer.ProcessMessageQueue(); // GUARD, DONT DO STATE STUFF IF WE ARE WAITING if (_waitingOnStateTimer) { continue; } switch (_currentState) { case GameState.Waiting: { if (_handshakenClientCount >= 2 && _connectedIds.Count >= 2) { _currentState = GameState.Begin; SendStateUpdate(_currentState); } break; } case GameState.Begin: { // Set timer to go to builder state beginTimer = new Timer(SECONDS_WAITING_IN_BEGIN * 1000); beginTimer.AutoReset = false; beginTimer.Start(); _waitingOnStateTimer = true; beginTimer.Elapsed += delegate(Object source, ElapsedEventArgs e) { _waitingOnStateTimer = false; _movedObjects = new Dictionary <ushort, Tuple <ushort, ushort> >(); _currentState = GameState.Builder; SendStateUpdate(_currentState); }; break; } case GameState.Builder: { // Set timer to go to builder state buildTimer = new Timer(SECONDS_WAITING_IN_BUILD * 1000); buildTimer.AutoReset = false; buildTimer.Start(); _waitingOnStateTimer = true; buildTimer.Elapsed += delegate(Object source, ElapsedEventArgs e) { _waitingOnStateTimer = false; // Reset everyones guesses foreach (PlayerData playerData in _playerDatas.Values) { playerData.guesses.Clear(); } // Make sure builder actually moved something, // if he didnt, goto scoring and give everyone else a point if (_movedObjects.Count > 0) { _currentState = GameState.Search; } else { foreach (PlayerData data in _playerDatas.Values) { if (data.id != _builderId) { data.points += 1; } _playerDatas[_builderId].points -= (ushort)_handshakenClientCount; } _currentState = GameState.Scoring; } SendStateUpdate(_currentState); }; break; } case GameState.Search: { // Set timer to go to scoring state searchTimer = new Timer(SECONDS_WAITING_IN_SEARCH * 1000); searchTimer.AutoReset = false; searchTimer.Start(); _waitingOnStateTimer = true; searchTimer.Elapsed += delegate(Object source, ElapsedEventArgs e) { _waitingOnStateTimer = false; _currentState = GameState.Scoring; SendStateUpdate(_currentState); }; break; } case GameState.Scoring: { // Set timer to wait for points to come in from clients scoringTimer = new Timer(SECONDS_WAITING_IN_SCORING * 1000); scoringTimer.AutoReset = false; scoringTimer.Start(); _waitingOnStateTimer = true; scoringTimer.Elapsed += delegate(Object source, ElapsedEventArgs e) { _waitingOnStateTimer = false; // Tell everyone everyones scores _bitBuffer.Clear(); _bitBuffer.AddByte(7); _bitBuffer.AddUShort((ushort)_playerDatas.Count); foreach (PlayerData data in _playerDatas.Values) { _bitBuffer.AddUShort(data.id); _bitBuffer.AddShort(data.points); } _bitBuffer.ToArray(_buffer); _webServer.SendAll(_connectedIds, new ArraySegment <byte>(_buffer, 0, 3 + 4 * _playerDatas.Count)); if (_handshakenClientCount >= 2 && _connectedIds.Count >= 2) { _currentState = GameState.Begin; } else { _currentState = GameState.Waiting; } SendStateUpdate(_currentState); }; break; } } } Console.WriteLine("Closing server"); _webServer.Stop(); }
static void Main(string[] args) { _rand = new Random(Environment.TickCount); SslConfig sslConfig; TcpConfig tcpConfig = new TcpConfig(true, 5000, 20000); Console.WriteLine("Setting up secure server"); sslConfig = new SslConfig(true, "cert.pfx", "", SslProtocols.Tls12); _webServer = new SimpleWebServer(10000, tcpConfig, 16 * 1024, 3000, sslConfig); _webServer.Start(Constants.GAME_PORT); Console.WriteLine("Server started"); _webServer.onConnect += WebServerOnConnect; _webServer.onData += WebServerOnData; _webServer.onDisconnect += WebServerOnDisconnect; Timer stateUpdateTimer = new Timer(1f / Constants.SERVER_TICKRATE * 1000); stateUpdateTimer.Elapsed += StateUpdateTimerOnElapsed; stateUpdateTimer.AutoReset = true; stateUpdateTimer.Enabled = true; while (!Console.KeyAvailable) { _webServer.ProcessMessageQueue(); // GUARD, DONT DO STATE STUFF IF WE ARE WAITING if (_waitingOnStateTimer) { continue; } switch (_currentState) { case GameState.Waiting: { if (_connectedIds.Count >= 2) { _currentState = GameState.Begin; SendStateUpdate(_currentState); } break; } case GameState.Begin: { // Set timer to go to builder state beginTimer = new Timer(SECONDS_WAITING_IN_BEGIN * 1000); beginTimer.AutoReset = false; beginTimer.Start(); _waitingOnStateTimer = true; beginTimer.Elapsed += delegate(Object source, ElapsedEventArgs e) { _waitingOnStateTimer = false; _movedObjects = new List <ushort>(); _currentState = GameState.Builder; SendStateUpdate(_currentState); }; break; } case GameState.Builder: { // Set timer to go to builder state buildTimer = new Timer(SECONDS_WAITING_IN_BUILD * 1000); buildTimer.AutoReset = false; buildTimer.Start(); _waitingOnStateTimer = true; buildTimer.Elapsed += delegate(Object source, ElapsedEventArgs e) { _waitingOnStateTimer = false; // Reset everyones guesses foreach (PlayerData playerData in _playerDatas.Values) { playerData.guesses.Clear(); } _currentState = GameState.Search; SendStateUpdate(_currentState); }; break; } case GameState.Search: { // Set timer to go to scoring state searchTimer = new Timer(SECONDS_WAITING_IN_SEARCH * 1000); searchTimer.AutoReset = false; searchTimer.Start(); _waitingOnStateTimer = true; searchTimer.Elapsed += delegate(Object source, ElapsedEventArgs e) { _waitingOnStateTimer = false; _currentState = GameState.Scoring; SendStateUpdate(_currentState); }; break; } case GameState.Scoring: { short builderPoints = 0; _bitBuffer.Clear(); _bitBuffer.AddByte(7); _bitBuffer.AddUShort((ushort)_playerDatas.Count); foreach (var playerData in _playerDatas.Values) { // GUARD, DON'T SCORE THE BUILDER THIS WAY if (playerData.id == _builderId) { continue; } // Free points for objects builder couldnt move // A point for a correct guess, minus point for a wrong guess int numCorrect = _movedObjects.Distinct().Intersect(playerData.guesses).Count(); int newPoints = (numCorrect * 2) - playerData.guesses.Count + (NUMBER_OF_MOVEABLE_OBJECTS - _movedObjects.Count); playerData.points += (short)newPoints; // Builder gets a point for each player who couldnt find any differences if (numCorrect == 0) { builderPoints += 1; } _bitBuffer.AddUShort(playerData.id); _bitBuffer.AddShort(playerData.points); } _playerDatas[_builderId].points += builderPoints; _bitBuffer.AddUShort((ushort)_builderId); _bitBuffer.AddShort(_playerDatas[_builderId].points); _bitBuffer.ToArray(_buffer); _webServer.SendAll(_connectedIds, new ArraySegment <byte>(_buffer, 0, 3 + 2 * _playerDatas.Count)); if (_connectedIds.Count >= 2) { _currentState = GameState.Begin; } else { _currentState = GameState.Waiting; } SendStateUpdate(_currentState); break; } } } Console.WriteLine("Closing server"); _webServer.Stop(); }
/// <summary> /// 设置ssl /// </summary> /// <param name="config">SslConfig</param> /// <returns></returns> public ThriftyBootstrap SslConfig(SslConfig config) { this.CheckCanAddFutures(); this._serverConfig.Ssl = config; return(this); }