protected override Coop_Model_Base OnDeserializeStringModel(PacketStringStream stream, Type type, CoopPacketHeader header)
    {
        string          message         = stream.Read();
        Coop_Model_Base coop_Model_Base = JSONSerializer.Deserialize <Coop_Model_Base>(message);
        Type            modelType       = ((PACKET_TYPE)coop_Model_Base.c).GetModelType();

        return(JSONSerializer.Deserialize <Coop_Model_Base>(message, modelType));
    }
    protected override CoopPacketHeader OnDeserializeStringHeader(PacketStringStream stream)
    {
        string text        = stream.Read(4);
        int    len         = (!(version == "00")) ? 1 : 11;
        int    position    = stream.Position;
        string user_token  = stream.Read(len);
        string user_token2 = stream.Read(len);
        string a           = stream.Read(1);
        string s           = stream.Read(16);
        int    num         = stream.Position - position;

        if (num.ToString("X4") != text)
        {
            Log.Error(LOG.WEBSOCK, "break header packet! {0} != {1}", num, int.Parse(text, NumberStyles.HexNumber));
        }
        int  from        = ConvertClientId(user_token);
        int  to          = ConvertClientId(user_token2);
        bool promise     = a == "1";
        int  sequence_no = int.Parse(s);

        return(new CoopPacketHeader(0, from, to, promise, sequence_no));
    }
 protected override void OnDeserializeStringPrefix(PacketStringStream stream)
 {
     version = stream.Read("10".Length);
 }