遊戲思惟開發社區問答系統的感覺

做爲一個項目或者一個產品,開始項目以前,咱們都會作下來討論下技術選型的事情,因爲社區彬哥我主導社區的發展,並且社區系統開發人員就2人,因此技術上走簡單的路線 選擇先後端分離 以下:html

前端:原生(js/html);因爲功能不難,沒有必要用框架;
後端:golang;
通訊方式:長鏈接模擬短連接(因爲考慮到社區系統一對一的實時在線交流而設計)
通訊協議:自定義協議(傳輸方式json) 以下:前端

// --------------------------------------------------------------------------------
// 【發表評論】 C2S_WinXinPlayer_Comment_WT_Proto
// 用戶提問
// 數據須要保存用戶的綁定信息
type C2S_WinXinPlayer_Comment_WT struct {
   Protocol  uint32 // 主協議
   Protocol2 uint32 // 子協議
   WenTiID   string // 問答的ID
   OpenID    string // 提問者的openid
   PLOpenID  string // PLOpenID,評論問題的人的openid
   Data      string // 組合數據發過來--服務器只負責保存---評論的內容
   Type      string // 評論的類型--提問者選擇的最佳的評論
}
// S2C_WinXinPlayer_Comment_WT_Proto
type S2C_WinXinPlayer_Comment_WT struct {
   Protocol  uint32 // 主協議
   Protocol2 uint32 // 子協議
   IS_Succ   bool   // 是否成功
}
// 數據更新操做的說明
// --------------------------------------------------------------------------------
// --------------------------------------------------------------------------------
// 問答結構
type WenDaJG struct {
   Id      string
   OpenID  string
   Name    string
   Headurl string
   Data    string
   PicData string
   Coin    string
   State   string
   Time    string
}
// 【獲取問答列表】 C2S_WinXinPlayer_GetList_WT_Proto
type C2S_WinXinPlayer_GetList_WT struct {
   Protocol  uint32 // 主協議
   Protocol2 uint32 // 子協議
   OpenID    string // 用戶的惟一憑證
   PageNum   string // 第一次獲取PageNum == 」0「  ; 後面的頁面 PageNum == 每頁的最小ID
}
// 服務器返回
// S2C_WinXinPlayer_GetList_WT_Proto
type S2C_WinXinPlayer_GetList_WT struct {
   Protocol  uint32              // 主協議
   Protocol2 uint32              // 子協議
   Data      map[string]*WenDaJG // 5個數據
}
// --------------------------------------------------------------------------------
// 【提問功能】 C2S_WinXinPlayer_TiWen_Proto
// 用戶提問
// 數據須要保存用戶的綁定信息
type C2S_WinXinPlayer_TiWen struct {
   Protocol  uint32 // 主協議
   Protocol2 uint32 // 子協議
   OpenID    string // 用戶的惟一憑證
   Data      string // 組合數據發過來--服務器只負責保存
   PicData   string // 圖片數據  base64數據;服務器存儲
   Coin      string // 懸賞金幣---由提問者本身選擇多少,且大於1至少,最高100
}
// S2C_WinXinPlayer_TiWen_Proto
type S2C_WinXinPlayer_TiWen struct {
   Protocol  uint32 // 主協議
   Protocol2 uint32 // 子協議
   IS_Succ   bool   // 是否成功
}
// 數據更新操做的說明
// --------------------------------------------------------------------------------
// 【用戶講師申請】 C2S_WinXinPlayer_Apply_Teacher_Proto
// 用戶講師申請--普通用戶申請爲老師
// 須要提供社區資格(申請碼)--微店購買價值1000元,目活動5折
type C2S_WinXinPlayer_Apply_Teacher struct {
   Protocol   uint32 // 主協議
   Protocol2  uint32 // 子協議
   OpenID     string // 申請人的微信的OpenID 數據--服務器判斷用戶的惟一
   Apply_Code string // 申請碼  GM 系統生成
}
// S2C_WinXinPlayer_Apply_Teacher_Proto
type S2C_WinXinPlayer_Apply_Teacher struct {
   Protocol  uint32 // 主協議
   Protocol2 uint32 // 子協議
   Code      string // 1:表示邀請碼已經使用,2:邀請碼不存在,3:申請成功,4:已經申請中
}
//--------------------------------------------------------------------------------
// 【臨時房間交流】 Room_AC_Broadcast_Proto
// 廣播協議(針對房間內人員有效)--臨時房間交流
type Room_AC_Broadcast struct {
   Protocol  uint32 // 主協議
   Protocol2 uint32 // 子協議
   RoomUID   string // 消息接收的房間UID
   Data      string // 組合數據--手機+服務器按照必定規則定製;同時包括解答問題結束
}
//--------------------------------------------------------------------------------
// 【廣播協議】
// 更新全部客戶端的老師的狀態信息
type Teacher_State_Broadcast struct {
   Protocol  uint32 // 主協議
   Protocol2 uint32 // 子協議
   T_UID     string // 老師UID信息--服務器惟一ID
   T_State   string // t_1:表示空閒,t_2:忙碌,t_3:不在線,t_4:未知狀態
}
//--------------------------------------------------------------------------------
// 【答題者選擇---老師】 C2S_WinXinPlayer_Choose_T_Proto
//  手機請求
type C2S_WinXinPlayer_Choose_T struct {
   Protocol     uint32 // 主協議
   Protocol2    uint32 // 子協議
   T_PlayerUID  string // 提問者的UID
   T_TeacherUID string // 選擇的講師的UID信息
   T_Coin       string // 選擇懸賞的金幣的錢數 -----> 社區幣;用戶兌換活動費用等 1元=10個,用戶答題使用;充值到數據
   T_Problem    string // 問題(問題描述)--->  暫時不支持  代碼塊提交;迭代版本中再優化
   T_IsPic      bool   // 是否有圖片數據;  false:表示無; true :存在
   T_PicBase64  string // 圖片base64數據;注:圖片限制再90K傳輸;且只能夠是1張
   T_IsZJ       bool   // 若是老師角色此題難度 超過提問者懸賞,當提問者設置能夠追加後,老師能夠點擊付費增長
}
// 【答題者選擇---老師】 S2C_WinXinPlayer_Choose_T_Proto
// 服務器返回
// 此協議一樣須要廣播給對應老師及提問者
type S2C_WinXinPlayer_Choose_T struct {
   Protocol     uint32                  // 主協議
   Protocol2    uint32                  // 子協議
   T_State      string                  // t_1:表示空閒,t_2:忙碌,t_3:不在線,t_4:未知狀態  能夠去除,可是爲了校驗能夠保留(若是由於網絡廣播協議沒有收到,以此標誌位爲準)
   TMP_RoomData map[string]*TEMP_RoomST // 服務器創建臨時交流房間結構
}
//--------------------------------------------------------------------------------
// 用戶在社區系統的結構數據
type WX_Player_Data struct {
   UID       string
   Name      string
   GroupType string // 用戶組的權限,1:爲問答者;2:爲老師;3:爲官方監督員(禁言用戶權限,封號處理等)
   Lev       string // 用戶的級別;包括老師星級
   Coin      string // 社區幣;用戶兌換活動費用等 1元=10個,用戶答題使用;充值到數據
   Time      string // 註冊時間
}
type WX_Player_DataDB struct {
   ID      string
   OpenID  string
   Name    string
   HeadUrl string
   XingJi  string
   Coin    string
   Type    string
   Time    string
}
// 【微信用戶報名的協議】 S2C_Net_WinXin_OpenID_BaoMing_Proto
type S2C_Net_WinXin_OpenID_BaoMing struct {
   Protocol  uint32                       // 主協議
   Protocol2 uint32                       // 子協議
   Data      map[string]*WX_Player_DataDB // 微信用戶綁定的系統的存儲數據
}
// 【微信用戶報名的協議】 C2S_Net_WinXin_OpenID_BaoMing_Proto
type C2S_Net_WinXin_OpenID_BaoMing struct {
   Protocol  uint32 // 主協議
   Protocol2 uint32 // 子協議
   Code      string // 微信受權的Code
}
//--------------------------------------------------------------------------------

部分研發截圖:

圖片


圖片

圖片

相關文章
相關標籤/搜索