//https://www.cnblogs.com/hobinly/p/7157481.html //https://developers.google.com/protocol-buffers/docs/techniques?csw=1#streaming //https://stackoverflow.com/questions/48558451/using-protobuf-codedinputstream-to-read-from-byte private void LateUpdate() { if (!NGNetwork.IsConnected) { return; } mCurTime += Time.deltaTime; if (mCurTime > TransmitInterval) { mCurTime = 0; ViewSyncParams paramss = _container.SerializeAll(); if (paramss.VsdParams.Count == 0) { return; } SendMessage viewsyncmsg = new SendMessage(); viewsyncmsg.MsgType = MessageType.ViewSync; viewsyncmsg.VsParams = paramss; var buf = NGMessageCodec.Encode(viewsyncmsg.ToByteArray()); NGNetwork.Socket.Send(buf); } }
public void UnsubscribeMsgChannels(uint[] channelids) { SendMessage unsubmsg = new SendMessage(); unsubmsg.MsgType = MessageType.UnSubscribeMsgChannels; unsubmsg.UsmcParams.Channelids.AddRange(channelids); var buf = NGMessageCodec.Encode(unsubmsg.ToByteArray()); NGNetwork.Socket.Send(buf); }
public void LeaveRoom() { SendMessage leaveroom = new SendMessage(); leaveroom.MsgType = MessageType.LeaveRoom; var buf = NGMessageCodec.Encode(leaveroom.ToByteArray()); NGNetwork.Socket.Send(buf); NGInterface.CurrentRoom().ClearPlayers(); }
public void JoinRoom(string roomid) { SendMessage joinroom = new SendMessage(); joinroom.MsgType = MessageType.JoinRoom; joinroom.JrParams = new JoinRoomParams(); joinroom.JrParams.RoomId = roomid; var buf = NGMessageCodec.Encode(joinroom.ToByteArray()); NGNetwork.Socket.Send(buf); this.RoomName = roomid; }
//Send RPC to server public static void SendRPC(uint viewID, string methodname, RPCTarget target, params NGAny[] parameters) { SendMessage message = new SendMessage(); message.MsgType = MessageType.Rpc; message.RpcParams = new RPCParams(); message.RpcParams.MethodName = methodname; message.RpcParams.Target = target; message.RpcParams.ViewID = viewID; message.RpcParams.Parameters.AddRange(parameters); var buf = NGMessageCodec.Encode(message.ToByteArray()); NGNetwork.Socket.Send(buf); }
public void CreateRoom(string roomid, uint maxnumber) { SendMessage creatroom = new SendMessage(); creatroom.MsgType = MessageType.CreateRoom; creatroom.CrParams = new CreateRoomParams(); creatroom.CrParams.RoomId = roomid; creatroom.CrParams.MaxNumber = maxnumber; var buf = NGMessageCodec.Encode(creatroom.ToByteArray()); NGNetwork.Socket.Send(buf); this.RoomName = roomid; }
public static void SendCustomEvent(uint eventid, uint[] targetpeerids, NGAny[] customdata) { SendMessage ce = new SendMessage(); ce.MsgType = MessageType.CustomEvent; ce.CeParams = new CustomEventParams(); ce.CeParams.EventID = eventid; ce.CeParams.TargetPeerIds.AddRange(NGProtobufConverter <uint> .Array2RepeatedField(targetpeerids)); ce.CeParams.CustomData.AddRange(NGProtobufConverter <NGAny> .Array2RepeatedField(customdata)); var buf = NGMessageCodec.Encode(ce.ToByteArray()); NGNetwork.Socket.Send(buf); }
public void Instantiate(string prefabname, Vector3 position, Quaternion rotation, uint[] viewids) { SendMessage i = new SendMessage(); i.MsgType = MessageType.Instantiation; i.IParams = new InstantiationParams(); i.IParams.PrefabName = prefabname; i.IParams.Position = position; i.IParams.Rotation = rotation; i.IParams.ViewIDs.AddRange(NGProtobufConverter <uint> .Array2RepeatedField(viewids)); var buf = NGMessageCodec.Encode(i.ToByteArray()); NGNetwork.Socket.Send(buf); }
public IEnumerator Process() { lock (NGNetwork.Socket.MBufferQueue) { // NGLogger.LogDebug("Lock BufferQueue"); while (NGNetwork.Socket.MBufferQueue.Count > 0) { //NGLogger.LogDebug("Proceess BufferQueue"); NGBuffer buffer = NGNetwork.Socket.MBufferQueue.Dequeue(); mReceiveCache.AddRange(buffer.Bytes); byte[] currBytes; while ((currBytes = NGMessageCodec.Decode(ref mReceiveCache)) != null) { //NGLogger.LogDebug("Decode message from BufferQueue"); //mReceiveCache.Clear(); //ProcessRecieveData(currBytes); MessageProcessor(currBytes); } } } yield return new WaitForSeconds(2); }