private void OnSocketRead(IAsyncResult ar) { if (_hbTimer != null) { _hbTimer.ResetTimer(); } Debug.Log("Beginning to receive socket data"); int length = _stream.EndRead(ar); if (length <= 0) { Debug.Log("Someone disconnected"); Debug.Log("The connection is -> " + _connectInfo); var message = new PrimeNetMessage { MessageBody = ClientNumber.ToString(), NetMessage = _connectInfo.IsServer ? EPrimeNetMessage.ClientDisconnected : EPrimeNetMessage.ServerDisconnected, SenderIP = _connectInfo.HosHostAddress.ToString() }; Debug.Log("HB Timer? " + _hbTimer != null); if (_hbTimer != null) { Debug.Log("Stopping timer after disconnect from socket"); _hbTimer.Stop(); } IsActive = false; Debug.Log("Is message being sent?"); PublishDataReceived(new DataReceivedEvent(message.Serialize())); return; } string newMessage = System.Text.Encoding.UTF8.GetString(buffer, 0, length); var receivedData = System.Text.Encoding.Default.GetString(buffer); Debug.Log("Recieved message " + receivedData); PublishDataReceived(new DataReceivedEvent(receivedData)); IsActive = true; // Clear current buffer and look for more data from the server Array.Clear(buffer, 0, buffer.Length); _stream.BeginRead(buffer, 0, buffer.Length, OnSocketRead, null); }
public void Broadcast2(PrimeNetMessage message) { Debug.Log("broadcasting message " + message.MessageBody); StatusMessage("broadcasting message " + message.MessageBody); foreach (var client in _clientList) { if (client.IsConnected()) { message.SenderIP = _conn.HosHostAddress.ToString(); StatusMessage("Sending to a connected client"); client.Send(message.Serialize()); } } }
public void Disconnect() { if (_hbTimer != null) { _hbTimer.Stop(); } PrimeNetMessage message = new PrimeNetMessage { MessageBody = "Disconnected from remote end", NetMessage = _connectInfo.IsServer ? EPrimeNetMessage.ClientConnected : EPrimeNetMessage.ServerDisconnected, SenderIP = _connectInfo.HosHostAddress.ToString() }; PublishDataReceived(new DataReceivedEvent(message.Serialize())); }
public void Read() { IsActive = true; PrimeNetMessage message = new PrimeNetMessage { MessageBody = ClientID.ToString(), NetMessage = _connectInfo.IsServer ? EPrimeNetMessage.ClientConnected : EPrimeNetMessage.ServerConnected, SenderIP = _connectInfo.HosHostAddress.ToString() }; PublishDataReceived(new DataReceivedEvent(message.Serialize())); Stream.BeginRead(buffer, 0, buffer.Length, OnRead, null); }
private void OnRead(IAsyncResult ar) { _hbTimer.ResetTimer(); Debug.Log("OnRead: Beginning to receive data"); int length = Stream.EndRead(ar); if (length <= 0) { Debug.Log("OnRead: Someone disconnected"); PrimeNetMessage message = new PrimeNetMessage { MessageBody = ClientID.ToString(), NetMessage = _connectInfo.IsServer ? EPrimeNetMessage.ClientConnected : EPrimeNetMessage.ServerDisconnected, SenderIP = _connectInfo.HosHostAddress.ToString() }; PublishDataReceived(new DataReceivedEvent(message.Serialize())); _hbTimer.Stop(); IsActive = false; return; } if (length == 1) // HB { } string newMessage = System.Text.Encoding.UTF8.GetString(buffer, 0, length); var receivedData = System.Text.Encoding.Default.GetString(buffer); Debug.Log("Recieved message " + receivedData); PublishDataReceived(new DataReceivedEvent(receivedData)); // Clear current buffer and look for more data from the server Array.Clear(buffer, 0, buffer.Length); Stream.BeginRead(buffer, 0, buffer.Length, OnRead, null); }
public void Broadcast(PrimeNetMessage message) { Debug.Log("Broadcasting message to socket {" + message.MessageBody); StatusMessage("broadcasting message " + message.MessageBody); foreach (var client in _clientList) { try { if (client.IsSocketConnected()) { message.SenderIP = _conn.HosHostAddress.ToString(); StatusMessage("Sending to a connected client"); client.SocketSend(message.Serialize()); } } catch (Exception ex) { Debug.Log("Error sending message to a client - " + ex.Message); } } }
public void DirectMessage(Guid id, PrimeNetMessage message) { Debug.Log("Sending a message to specific client {" + message.MessageBody + "}"); // StatusMessage("Sending message " + message.MessageBody); var client = _clientList.Find(x => x.ClientID == id); if (client != null) { try { if (client.IsSocketConnected()) { message.SenderIP = _conn.HosHostAddress.ToString(); StatusMessage("Sending to a connected client"); client.SocketSend(message.Serialize()); } } catch (Exception ex) { Debug.Log("Error sending message to a client - " + ex.Message); } } }