рдЧреЛ рд╡рд╛рдкрд░реВрди рдЙрджреНрдпреЛрдЧрд╛рд╕рд╛рдареА рдмреНрд▓реЙрдХрдЪреЗрди рд╡рд┐рдХрд╛рд╕. рднрд╛рдЧ 1

рдЖрддрд╛ рдЪрд╛рд░ рдорд╣рд┐рдиреНрдпрд╛рдВрдкрд╛рд╕реВрди рдореА "рдмреНрд▓реЙрдХрдЪреЗрдирд╡рд░ рдЖрдзрд╛рд░рд┐рдд рд╕рд░рдХрд╛рд░реА рдЖрдгрд┐ рдФрджреНрдпреЛрдЧрд┐рдХ рдХреНрд╖реЗрддреНрд░рд╛рддреАрд▓ рдбреЗрдЯрд╛ рд╕рдВрд░рдХреНрд╖рдг рдЖрдгрд┐ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рд╕рд╛рдзрдирд╛рдВрдЪрд╛ рд╡рд┐рдХрд╛рд╕" рдирд╛рд╡рд╛рдЪреНрдпрд╛ рдкреНрд░рдХрд▓реНрдкрд╛рд╡рд░ рдХрд╛рдо рдХрд░рдд рдЖрд╣реЗ.
рдЖрддрд╛ рдореА рддреБрдореНрд╣рд╛рд▓рд╛ рд╣рд╛ рдкреНрд░рдХрд▓реНрдк рдХрд╕рд╛ рд╕реБрд░реВ рдХреЗрд▓рд╛ рдпрд╛рдмрджреНрджрд▓ рд╕рд╛рдВрдЧреВ рдЗрдЪреНрдЫрд┐рддреЛ рдЖрдгрд┐ рдЖрддрд╛ рдореА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдбрдЪреЗ рддрдкрд╢реАрд▓рд╡рд╛рд░ рд╡рд░реНрдгрди рдХрд░реЗрди.

рдЧреЛ рд╡рд╛рдкрд░реВрди рдЙрджреНрдпреЛрдЧрд╛рд╕рд╛рдареА рдмреНрд▓реЙрдХрдЪреЗрди рд╡рд┐рдХрд╛рд╕. рднрд╛рдЧ 1

рд▓реЗрдЦрд╛рдВрдЪреНрдпрд╛ рдорд╛рд▓рд┐рдХреЗрддреАрд▓ рд╣рд╛ рдкрд╣рд┐рд▓рд╛ рд▓реЗрдЦ рдЖрд╣реЗ. рдпреЗрдереЗ рдореА рд╕рд░реНрд╡реНрд╣рд░ рдЖрдгрд┐ рдкреНрд░реЛрдЯреЛрдХреЙрд▓рдЪреЗ рд╡рд░реНрдгрди рдХрд░рддреЛ. рдЦрд░рдВ рддрд░, рд╡рд╛рдЪрдХ рдпрд╛ рдмреНрд▓реЙрдХрдЪреЗрди рдШрдЯрдХрд╛рдВрдЪреНрдпрд╛ рд╕реНрд╡рддрдГрдЪреНрдпрд╛ рдЖрд╡реГрддреНрддреНрдпрд╛ рджреЗрдЦреАрд▓ рд▓рд┐рд╣реВ рд╢рдХрддрд╛рдд.

рдЖрдгрд┐ рд╣рд╛ рджреБрд╕рд░рд╛ рднрд╛рдЧ рдЖрд╣реЗ тАФ рдмреНрд▓реЙрдХрдЪреЗрди рдЖрдгрд┐ рдЯреНрд░рд╛рдиреНрдЭреЕрдХреНрд╢рди рдбреЗрдЯрд╛ рд╕реНрдЯреНрд░рдХреНрдЪрд░реНрд╕рдмрджреНрджрд▓, рддрд╕реЗрдЪ рдбреЗрдЯрд╛рдмреЗрд╕рд╢реА рдкрд░рд╕реНрдкрд░рд╕рдВрд╡рд╛рдж рд▓рд╛рдЧреВ рдХрд░рдгрд╛рд▒реНрдпрд╛ рдкреЕрдХреЗрдЬрдмрджреНрджрд▓.

рдЧреЗрд▓реНрдпрд╛ рд╡рд░реНрд╖реА, рдбрд┐рдЬрд┐рдЯрд▓ рдмреНрд░реЗрдХрдереНрд░реВ рд╣реЕрдХрд╛рдереЙрдирдордзреНрдпреЗ, рддреНрдпрд╛рдВрдиреА рд╡рд┐рддрд░рд┐рдд рдЦрд╛рддреЗрд╡рд╣реА рддрдВрддреНрд░рдЬреНрдЮрд╛рдирд╛рдЪрд╛ рд╡рд╛рдкрд░ рдХрд░реВрди рдЙрджреНрдпреЛрдЧ рдЖрдгрд┐ рдбрд┐рдЬрд┐рдЯрд▓ рдЕрд░реНрдерд╡реНрдпрд╡рд╕реНрдереЗрд╕рд╛рдареА рдЙрдкрдпреБрдХреНрдд рдкреНрд░рдгрд╛рд▓реА рдмрдирд╡рдгреНрдпрд╛рдЪреА рдХрд▓реНрдкрдирд╛ рдорд╛рдВрдбрд▓реА; рдЗрдиреЛрд╡реНрд╣реЗрд╢рди рд╕рд╣рд╛рдпреНрдпрддрд╛ рдирд┐рдзреАрджреНрд╡рд╛рд░реЗ рд╡рд┐рдХрд╛рд╕рд╛рд╕рд╛рдареА рдЕрдиреБрджрд╛рди рджреЗрдЦреАрд▓ рдЬрд╛рд░реА рдХреЗрд▓реЗ рдЧреЗрд▓реЗ (рдореА рд╕реНрд╡рддрдВрддреНрд░рдкрдгреЗ рд▓рд┐рд╣рд╛рд╡реЗ рдЕрдиреБрджрд╛рдирд╛рдмрджреНрджрд▓ рд▓реЗрдЦ, рдЬреЗ рдиреБрдХрддреЗрдЪ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕реБрд░реВ рдХрд░рдд рдЖрд╣реЗрдд рддреНрдпрд╛рдВрдЪреНрдпрд╛рд╕рд╛рдареА ), рдЖрдгрд┐ рдЖрддрд╛ рдХреНрд░рдорд╛рдиреЗ.

рд╡рд┐рдХрд╛рд╕ рдЧреЛ рднрд╛рд╖реЗрдд рд╣реЛрддреЛ рдЖрдгрд┐ рдЬреНрдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕рдордзреНрдпреЗ рдмреНрд▓реЙрдХреНрд╕ рд╕рд╛рдард╡рд▓реЗ рдЬрд╛рддрд╛рдд рддреЗ рд▓реЗрд╡реНрд╣рд▓рдбреАрдмреА рдЖрд╣реЗ.
рдореБрдЦреНрдп рднрд╛рдЧ рдореНрд╣рдгрдЬреЗ рдкреНрд░реЛрдЯреЛрдХреЙрд▓, рд╕рд░реНрд╡реНрд╣рд░ (рдЬреЗ TCP рдЖрдгрд┐ WebSocket рдЪрд╛рд▓рд╡рддрд╛рдд - рдкрд╣рд┐рд▓рд╛ рдмреНрд▓реЙрдХрдЪреЗрди рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЭ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рджреБрд╕рд░рд╛ рдХреНрд▓рд╛рдпрдВрдЯ рдХрдиреЗрдХреНрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, JavaScript рд╡рд░реВрди рд╡реНрдпрд╡рд╣рд╛рд░ рдЖрдгрд┐ рдЖрджреЗрд╢ рдкрд╛рдард╡рдгреНрдпрд╛рд╕рд╛рдареА, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде.

рдирдореВрдж рдХреЗрд▓реНрдпрд╛рдкреНрд░рдорд╛рдгреЗ, рдпрд╛ рдмреНрд▓реЙрдХрдЪреЗрдирдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдкреНрд░рд╛рдореБрдЦреНрдпрд╛рдиреЗ рдкреБрд░рд╡рдард╛рджрд╛рд░ рдЖрдгрд┐ рдЧреНрд░рд╛рд╣рдХ рдпрд╛рдВрдЪреНрдпрд╛рддреАрд▓ рдЙрддреНрдкрд╛рджрдирд╛рдВрдЪреА рджреЗрд╡рд╛рдгрдШреЗрд╡рд╛рдг рдХрд┐рдВрд╡рд╛ рдПрдХрд╛рдЪ рд╡реНрдпрдХреНрддреАрдордзреНрдпреЗ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдЖрдгрд┐ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрд╣реЗ. рдпрд╛ рд▓реЛрдХрд╛рдВрдирд╛ рдПрдХрдореЗрдХрд╛рдВрд╡рд░ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдареЗрд╡рдгреНрдпрд╛рдЪреА рдШрд╛рдИ рдирд╕рддреЗ. рдкрд░рдВрддреБ рдХрд╛рд░реНрдп рдХреЗрд╡рд│ рдЕрдВрдЧрднреВрдд рдХреЕрд▓реНрдХреНрдпреБрд▓реЗрдЯрд░рд╕рд╣ "рдЪреЗрдХрдмреБрдХ" рддрдпрд╛рд░ рдХрд░рдгреЗ рдирд╛рд╣реА, рддрд░ рдЙрддреНрдкрд╛рджрдирд╛рдЪреНрдпрд╛ рдЬреАрд╡рди рдЪрдХреНрд░рд╛рд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рддрд╛рдирд╛ рдЙрджреНрднрд╡рдгрд╛рд░реА рдмрд╣реБрддреЗрдХ рдирд┐рдпрдорд┐рдд рдХрд╛рд░реНрдпреЗ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдХрд░рдгрд╛рд░реА рдкреНрд░рдгрд╛рд▓реА рдЖрд╣реЗ. рдмреНрд▓реЙрдХрдЪреЗрдиреНрд╕рдЪреНрдпрд╛ рдкреНрд░рдереЗрдкреНрд░рдорд╛рдгреЗ рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рд╕рд╛рдареА рдЬрдмрд╛рдмрджрд╛рд░ рдЕрд╕рд▓реЗрд▓рд╛ рдмрд╛рдЗрдЯрдХреЛрдб, рд╡реНрдпрд╡рд╣рд╛рд░рд╛рдВрдЪреНрдпрд╛ рдЗрдирдкреБрдЯ рдЖрдгрд┐ рдЖрдЙрдЯрдкреБрдЯрдордзреНрдпреЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рддреЛ (рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реНрд╡рддрдГ рдмреНрд▓реЙрдХрдордзреНрдпреЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд, рд▓реЗрд╡реНрд╣рд▓рдбреАрдмреА рдордзреАрд▓ рдмреНрд▓реЙрдХреНрд╕ рдЬреАрдУрдмреА рдлреЙрд░рдореЕрдЯрдордзреНрдпреЗ рдкреНрд░реА-рдПрдирдХреЛрдб рдХреЗрд▓реЗрд▓реЗ рдЕрд╕рддрд╛рдд). рдкреНрд░рдердо, рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдЖрдгрд┐ рд╕рд░реНрд╡реНрд╣рд░ (рдЙрд░реНрдл рдиреЛрдб) рдмрджреНрджрд▓ рдмреЛрд▓реВрдпрд╛.

рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреНрд▓рд┐рд╖реНрдЯ рдирд╛рд╣реА, рддреНрдпрд╛рдЪрд╛ рд╕рдВрдкреВрд░реНрдг рдореБрджреНрджрд╛ рдореНрд╣рдгрдЬреЗ рдХрд╛рд╣реА рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдореЛрдбрд╡рд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдгреЗ, рд╕рд╛рдорд╛рдиреНрдпрдд: рдмреНрд▓реЙрдХ рдХрд┐рдВрд╡рд╛ рд╡реНрдпрд╡рд╣рд╛рд░, рд╡рд┐рд╢реЗрд╖ рдХрдорд╛рдВрдб рд▓рд╛рдЗрдирдЪреНрдпрд╛ рдкреНрд░рддрд┐рд╕рд╛рджрд╛рдд, рдЖрдгрд┐ рдЗрдиреНрд╡реНрд╣реЗрдВрдЯрд░реАрдЪреА рджреЗрд╡рд╛рдгрдШреЗрд╡рд╛рдг рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рджреЗрдЦреАрд▓ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ, рдЬреЗрдгреЗрдХрд░реВрди рдиреЛрдбрд▓рд╛ рдХрд│реЗрд▓ рдХреА рддреЗ рдХреЛрдг рдЖрд╣реЗ. рд╢реА рдЬреЛрдбрд▓реЗрд▓реЗ рдЖрд╣реЗ рдЖрдгрд┐ рддреНрдпрд╛рдВрдЪрд╛ рд╡реНрдпрд╡рд╕рд╛рдп рдХрд╕рд╛ рдХрд░рд╛рдпрдЪрд╛ рдЖрд╣реЗ (рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЭреЗрд╢рди рд╕рддреНрд░рд╛рд╕рд╛рдареА рдЬреЛрдбрд▓реЗрд▓реНрдпрд╛ рдиреЛрдбреНрд╕рдирд╛ "рд╢реЗрдЬрд╛рд░реА" рджреЗрдЦреАрд▓ рдореНрд╣рдЯрд▓реЗ рдЬрд╛рддреЗ рдХрд╛рд░рдг рддреНрдпрд╛рдВрдЪрд╛ рдЖрдпрдкреА рдЬреНрдЮрд╛рдд рдЖрд╣реЗ рдЖрдгрд┐ рддреНрдпрд╛рдВрдЪрд╛ рд╕реНрдЯреЗрдЯ рдбреЗрдЯрд╛ рдореЗрдорд░реАрдордзреНрдпреЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рддреЛ).

рдЧреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░рдЪреНрдпрд╛ рд╕рдордЬреБрддреАрдиреБрд╕рд╛рд░ рдлреЛрд▓реНрдбрд░реНрд╕ (рдбрд┐рд░реЗрдХреНрдЯрд░реАрдЬ рдЬреНрдпрд╛рдВрдирд╛ рд▓рд┐рдирдХреНрд╕ рдореНрд╣рдгрддрд╛рдд) рддреНрдпрд╛рдВрдирд╛ рдкреЕрдХреЗрдЬреЗрд╕ рдореНрд╣рдгрддрд╛рдд, рдореНрд╣рдгреВрди рдпрд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХреЗрддреАрд▓ рдЧреЛ рдХреЛрдб рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рдлрд╛рдИрд▓рдЪреНрдпрд╛ рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛ рддреЗ рдкреЕрдХреЗрдЬfolder_name_where_this_file рд╕реНрдерд┐рдд рдЖрд╣реЗ рдЕрд╕реЗ рд▓рд┐рд╣рд┐рддрд╛рдд. рдЕрдиреНрдпрдерд╛, рддреБрдореНрд╣реА рдХрдВрдкрд╛рдЗрд▓рд░рд▓рд╛ рдкреЕрдХреЗрдЬ рдлреАрдб рдХрд░реВ рд╢рдХрдгрд╛рд░ рдирд╛рд╣реА. рдмрд░рдВ, рд╣реА рднрд╛рд╖рд╛ рдЬрд╛рдгрдгрд╛рд░реНтАНрдпрд╛рдВрд╕рд╛рдареА рд╣реЗ рд░рд╣рд╕реНрдп рдирд╛рд╣реА. рд╣реА рдкреЕрдХреЗрдЬреЗрд╕ рдЖрд╣реЗрдд:

  • рдиреЗрдЯрд╡рд░реНрдХ рдХрдореНрдпреБрдирд┐рдХреЗрд╢рди (рд╕рд░реНрд╡реНрд╣рд░, рдХреНрд▓рд╛рдпрдВрдЯ, рдкреНрд░реЛрдЯреЛрдХреЙрд▓)
  • рд╕рдВрдЧреНрд░рд╣рд┐рдд рдЖрдгрд┐ рдкреНрд░рд╕рд╛рд░рд┐рдд рдбреЗрдЯрд╛рдЪреА рд╕рдВрд░рдЪрдирд╛ (рдмреНрд▓реЙрдХ, рд╡реНрдпрд╡рд╣рд╛рд░)
  • рдбреЗрдЯрд╛рдмреЗрд╕ (рдмреНрд▓реЙрдХрдЪреЗрди)
  • рдПрдХрдордд
  • рд╕реНрдЯреЕрдХ рдХреЗрд▓реЗрд▓реЗ рдЖрднрд╛рд╕реА рдорд╢реАрди (xvm)
  • рд╕рд╣рд╛рдпреНрдпрдХ (рдХреНрд░рд┐рдкреНрдЯреЛ, рдкреНрд░рдХрд╛рд░) рдЖрддрд╛рд╕рд╛рдареА рдПрд╡рдвреЗрдЪ.

рдпреЗрдереЗ github рдЪреА рд▓рд┐рдВрдХ рдЖрд╣реЗ

рд╣реА рдПрдХ рд╢реИрдХреНрд╖рдгрд┐рдХ рдЖрд╡реГрддреНрддреА рдЖрд╣реЗ, рддреНрдпрд╛рдд рдЖрдВрддрд░-рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░рд╕реНрдкрд░рд╕рдВрд╡рд╛рдж рдЖрдгрд┐ рдЕрдиреЗрдХ рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рдШрдЯрдХрд╛рдВрдЪрд╛ рдЕрднрд╛рд╡ рдЖрд╣реЗ, рдкрд░рдВрддреБ рд░рдЪрдирд╛ рдЬреНрдпрд╛рд╡рд░ рд╡рд┐рдХрд╛рд╕ рдХреЗрд▓рд╛ рдЬрд╛рдд рдЖрд╣реЗ рддреНрдпрд╛рдЪреНрдпрд╛рд╢реА рд╕реБрд╕рдВрдЧрдд рдЖрд╣реЗ. рддреБрдордЪреНрдпрд╛рдХрдбреЗ рдЯрд┐рдкреНрдкрдгреНрдпрд╛рдВрдордзреНрдпреЗ рдХрд╛рд╣реА рд╕реБрдЪрд╡рд╛рдпрдЪреЗ рдЕрд╕рд▓реНрдпрд╛рд╕, рдкреБрдвреАрд▓ рд╡рд┐рдХрд╛рд╕рд╛рдордзреНрдпреЗ рддреЗ рд╡рд┐рдЪрд╛рд░рд╛рдд рдШреЗрдгреНрдпрд╛рд╕ рдорд▓рд╛ рдЖрдирдВрдж рд╣реЛрдИрд▓. рдЖрдгрд┐ рдЖрддрд╛ рд╕рд░реНрд╡реНрд╣рд░рдЪреНрдпрд╛ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдгрд╛рд╕рд╛рдареА рдЖрдгрд┐ рдкреНрд░реЛрдЯреЛрдХреЙрд▓.

рдкреНрд░рдердо рд╕рд░реНрд╡реНрд╣рд░ рдкрд╛рд╣реВ.

рд╕рд░реНрд╡реНрд╣рд░ рд╕рдмрд░реВрдЯреАрди рдбреЗрдЯрд╛ рд╕рд░реНрд╡реНрд╣рд░ рдореНрд╣рдгреВрди рдХрд╛рд░реНрдп рдХрд░рддреЗ рдЬреЗ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдкреЕрдХреЗрдЬрдордзреАрд▓ рдбреЗрдЯрд╛ рд╕реНрдЯреНрд░рдХреНрдЪрд░реНрд╕ рд╡рд╛рдкрд░реВрди TCP рдкреНрд░реЛрдЯреЛрдХреЙрд▓рдЪреНрдпрд╛ рд╡рд░ рдЪрд╛рд▓рддреЗ.

рджрд┐рдирдЪрд░реНрдпрд╛ рдЦрд╛рд▓реАрд▓ рдкреЕрдХреЗрдЬреЗрд╕ рд╡рд╛рдкрд░рддреЗ: рд╕рд░реНрд╡реНрд╣рд░, рдкреНрд░реЛрдЯреЛрдХреЙрд▓, рдкреНрд░рдХрд╛рд░. рдкреЕрдХреЗрдЬрдордзреНрдпреЗрдЪ tcp_server.go рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рд╕рдорд╛рд╡рд┐рд╖реНрдЯреАрдд рдЖрд╣реЗ рд╕рд░реНрд╡реНрд╣ рдХрд░рд╛рд╡реЗ.

type Serve struct {
	Port string
	BufSize int
	ST *types.Settings
}

рд╣реЗ рдЦрд╛рд▓реАрд▓ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рд╕реНрд╡реАрдХрд╛рд░реВ рд╢рдХрддреЗ:

  • рдиреЗрдЯрд╡рд░реНрдХ рдкреЛрд░реНрдЯ рдЬреНрдпрд╛рджреНрд╡рд╛рд░реЗ рдбреЗрдЯрд╛рдЪреА рджреЗрд╡рд╛рдгрдШреЗрд╡рд╛рдг рдХреЗрд▓реА рдЬрд╛рдИрд▓
  • JSON рдлреЙрд░рдореЕрдЯрдордзреНрдпреЗ рд╕рд░реНрд╡реНрд╣рд░ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдлрд╛рдЗрд▓
  • рдбреАрдмрдЧ рдореЛрдбрдордзреНрдпреЗ рдЪрд╛рд▓рдгреНрдпрд╛рд╕рд╛рдареА рдзреНрд╡рдЬрд╛рдВрдХрд┐рдд рдХрд░рд╛ (рдЦрд╛рдЬрдЧреА рдмреНрд▓реЙрдХрдЪреЗрди)

рдкреНрд░рдЧрддреА:

  • JSON рдлрд╛рдЗрд▓рдордзреВрди рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рд╡рд╛рдЪрддреЗ
  • рдбреАрдмрдЧ рдореЛрдб рдзреНрд╡рдЬ рддрдкрд╛рд╕рд▓рд╛ рдЖрд╣реЗ: рдЬрд░ рддреЛ рд╕реЗрдЯ рдХреЗрд▓рд╛ рдЕрд╕реЗрд▓ рддрд░, рдиреЗрдЯрд╡рд░реНрдХ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЭреЗрд╢рди рд╢реЗрдбреНрдпреВрд▓рд░ рд▓реЙрдиреНрдЪ рдХреЗрд▓реЗ рдЬрд╛рдд рдирд╛рд╣реА рдЖрдгрд┐ рдмреНрд▓реЙрдХрдЪреЗрди рд▓реЛрдб рдХреЗрд▓реЗрд▓реЗ рдирд╛рд╣реА
  • рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдбреЗрдЯрд╛ рд╕реНрдЯреНрд░рдХреНрдЪрд░ рд╕реБрд░реВ рдХрд░рдгреЗ рдЖрдгрд┐ рд╕рд░реНрд╡реНрд╣рд░ рд╕реБрд░реВ рдХрд░рдгреЗ

рд╕рд░реНрд╡реНрд╣рд░

  • рдкреНрд░реЛрдЯреЛрдХреЙрд▓рдиреБрд╕рд╛рд░ TCP рд╕рд░реНрд╡реНрд╣рд░ рдЖрдгрд┐ рдиреЗрдЯрд╡рд░реНрдХ рд╕рдВрд╡рд╛рджрд╛рдЪреЗ рдкреНрд░рдХреНрд╖реЗрдкрдг рдХрд░рддреЗ.
  • рдпрд╛рдд рд╕рд░реНрд╡реНрд╣ рдбреЗрдЯрд╛ рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдЖрд╣реЗ рдЬреНрдпрд╛рдордзреНрдпреЗ рдкреЛрд░реНрдЯ рдирдВрдмрд░, рдмрдлрд░ рд╕рд╛рдЗрдЬ рдЖрдгрд┐ рд╕реНрдЯреНрд░рдХреНрдЪрд░рд▓рд╛ рдкреЙрдЗрдВрдЯрд░ рдЖрд╣реЗ рдкреНрд░рдХрд╛рд░.рд╕реЗрдЯрд┐рдВрдЧреНрдЬ
  • рд░рди рдкрджреНрдзрдд рдиреЗрдЯрд╡рд░реНрдХ рдкрд░рд╕реНрдкрд░рд╕рдВрд╡рд╛рдж рд╕реБрд░реВ рдХрд░рддреЗ (рджрд┐рд▓реЗрд▓реНрдпрд╛ рдкреЛрд░реНрдЯрд╡рд░ рдЗрдирдХрдорд┐рдВрдЧ рдХрдиреЗрдХреНрд╢рди рдРрдХрдгреЗ, рдирд╡реАрди рдХрдиреЗрдХреНрд╢рди рдкреНрд░рд╛рдкреНрдд рдЭрд╛рд▓реНрдпрд╛рд╡рд░, рддреНрдпрд╛рдЪреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдирд╡реАрди рдереНрд░реЗрдбрдордзреНрдпреЗ рдЦрд╛рдЬрдЧреА рд╣рдБрдбрд▓ рдкрджреНрдзрддреАрдордзреНрдпреЗ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХреЗрд▓реА рдЬрд╛рддреЗ)
  • ╨Т рд╣рд╛рддрд╛рд│реВ рдХрдиреЗрдХреНрд╢рдирдордзреАрд▓ рдбреЗрдЯрд╛ рдмрдлрд░рдордзреНрдпреЗ рд╡рд╛рдЪрд▓рд╛ рдЬрд╛рддреЛ, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡рд╛рдордзреНрдпреЗ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рддреЛ рдЖрдгрд┐ рдкрд╛рд╕ рдХреЗрд▓рд╛ рдЬрд╛рддреЛ рдкреНрд░реЛрдЯреЛрдХреЙрд▓.рдирд┐рд╡рдб
  • рдкреНрд░реЛрдЯреЛрдХреЙрд▓.рдирд┐рд╡рдб рдкрд░рддрд╛рд╡рд╛ рдкрд░рд┐рдгрд╛рдо рдХрд┐рдВрд╡рд╛ рддреНрд░реБрдЯреА рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ. рдкрд░рд┐рдгрд╛рдо рдирдВрддрд░ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХреЗрд▓реЗ protocol.InterpreteрдЬреЗ рдкрд░рдд рдпреЗрддреЗ intrpr - рдкреНрд░рдХрд╛рд░рдЪреА рд╡рд╕реНрддреВ рдбреЗрдЯрд╛рдЪрд╛ рдЕрд░реНрде рд▓рд╛рд╡рд╛, рдХрд┐рдВрд╡рд╛ рдирд┐рд╡рдб рдкрд░рд┐рдгрд╛рдорд╛рд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛рдирд╛ рддреНрд░реБрдЯреА рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ
  • рдордЧ рд╕реНрд╡рд┐рдЪ рдЕрдВрдорд▓рд╛рдд рдЖрдгрд▓рд╛ рдЬрд╛рддреЛ intrpr.commands[0] рдЬреЗ рдПрдХ рддрдкрд╛рд╕рддреЗ: рдкрд░рд┐рдгрд╛рдо, inv, рддреНрд░реБрдЯреА рдЖрдгрд┐ рдПрдХ рд╡рд┐рднрд╛рдЧ рдЖрд╣реЗ рдбреАрдлреЙрд▓реНрдЯ
  • рд╡рд┐рднрд╛рдЧрд╛рдд рдкрд░рд┐рдгрд╛рдо рд╕реНрд╡рд┐рдЪ рдореВрд▓реНрдпрд╛рдиреБрд╕рд╛рд░ рдЖрдврд│рддреЛ intrpr.commands[1] рдЬреЗ рдореВрд▓реНрдпреЗ рддрдкрд╛рд╕рддреЗ рдмрдлрд░рд▓рд╛рдВрдмреА ╨╕ рдЖрд╡реГрддреНрддреА (рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рдмрддреАрдд рд╕рдВрдмрдВрдзрд┐рдд рдХрд╛рд░реНрдп рдореНрд╣рдгрддрд╛рдд)

рдХрд╛рд░реНрдпреЗ GetVersion ╨╕ рдмрдлрд░рд▓рд╛рдВрдмреА рдлрд╛рдИрд▓рдордзреНрдпреЗ рдЖрд╣реЗрдд srvlib.go рд╕рд░реНрд╡реНрд╣рд░ рдкреЕрдХреЗрдЬ

GetVersion(conn net.Conn, version string)

рддреЗ рдлрдХреНрдд рдХрдиреНрд╕реЛрд▓рд╡рд░ рдореБрджреНрд░рд┐рдд рдХрд░рддреЗ рдЖрдгрд┐ рдкреЕрд░рд╛рдореАрдЯрд░рдордзреНрдпреЗ рдкрд╛рд╕ рдХреЗрд▓реЗрд▓реА рдЖрд╡реГрддреНрддреА рдХреНрд▓рд╛рдпрдВрдЯрд▓рд╛ рдкрд╛рдард╡рддреЗ:

conn.Write([]byte("result:" + version))

.
рдХрд╛рд░реНрдп

BufferLength(conn net.Conn, intrpr *protocol.InterpreteData)

рдЦрд╛рд▓реАрд▓рдкреНрд░рдорд╛рдгреЗ рдмреНрд▓реЙрдХ, рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд┐рдВрд╡рд╛ рдЗрддрд░ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░рддреЗ:

  • рдкреНрд░реЛрдЯреЛрдХреЙрд▓рдордзреНрдпреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдбреЗрдЯрд╛рдЪрд╛ рдкреНрд░рдХрд╛рд░ рдХрдиреНрд╕реЛрд▓рд╡рд░ рдореБрджреНрд░рд┐рдд рдХрд░рддреЛ рдЬреНрдпрд╛рд▓рд╛ рд╕реНрд╡реАрдХрд╛рд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ:
    fmt.Println("DataType:", intrpr.Commands[2])
  • рдореВрд▓реНрдп рд╡рд╛рдЪрддреЛ intrpr.Body рдЕрдВрдХреАрдп рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓рд▓рд╛ buf_len
  • рдмрдлрд░ рддрдпрд╛рд░ рдХрд░рддреЛ newbuf рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЖрдХрд╛рд░:
    make([]byte, buf_len)
  • рдПрдХ рдареАрдХ рдкреНрд░рддрд┐рд╕рд╛рдж рдкрд╛рдард╡рддреЗ:
    conn.Write([]byte("result:ok"))
  • рд░реАрдб рд╕реНрдЯреНрд░реАрдордордзреВрди рдмрдлрд░ рдкреВрд░реНрдгрдкрдгреЗ рднрд░рддреЛ:
    io.ReadFull(conn, newbuf)

    .

  • рдХрдиреНрд╕реЛрд▓рд╡рд░ рдмрдлрд░рдЪреА рд╕рд╛рдордЧреНрд░реА рдореБрджреНрд░рд┐рдд рдХрд░рддреЗ
    fmt.Println(string(newbuf))

    рдЖрдгрд┐ рд╡рд╛рдЪрд▓реЗрд▓реНрдпрд╛ рдмрд╛рдЗрдЯреНрд╕рдЪреА рд╕рдВрдЦреНрдпрд╛

    fmt.Println("Bytes length:", n)
  • рдПрдХ рдареАрдХ рдкреНрд░рддрд┐рд╕рд╛рдж рдкрд╛рдард╡рддреЗ:
    conn.Write([]byte("result:ok"))

рдкреЕрдХреЗрдЬрдордзреАрд▓ рдлрдВрдХреНрд╢рдиреНрд╕ рд╡рд╛рдкрд░реВрди рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛рд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕рд░реНрд╡реНрд╣рд░ рдкреЕрдХреЗрдЬрдордзреАрд▓ рдкрджреНрдзрддреА рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЗрд▓реНрдпрд╛ рдЖрд╣реЗрдд рдкреНрд░реЛрдЯреЛрдХреЙрд▓.

рдкреНрд░реЛрдЯреЛрдХреЙрд▓

рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдиреЗрдЯрд╡рд░реНрдХ рдПрдХреНрд╕рдЪреЗрдВрдЬрдордзреНрдпреЗ рдбреЗрдЯрд╛рдЪреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдгрд╛рд░реЗ рд╕рд╛рдзрди рдореНрд╣рдгреВрди рдХрд╛рдо рдХрд░рддреЗ.

рдирд┐рд╡рдб(str рд╕реНрдЯреНрд░рд┐рдВрдЧ) (рд╕реНрдЯреНрд░рд┐рдВрдЧ, рдПрд░рд░) рд╕рд░реНрд╡реНрд╣рд░рджреНрд╡рд╛рд░реЗ рдкреНрд░рд╛рдкреНрдд рдЭрд╛рд▓реЗрд▓реНрдпрд╛ рдбреЗрдЯрд╛рдЪреА рдкреНрд░рд╛рдердорд┐рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рддреЗ, рдЗрдирдкреБрдЯ рдореНрд╣рдгреВрди рдбреЗрдЯрд╛рдЪреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рдЖрдгрд┐ рддреНрдпрд╛рд╕рд╛рдареА рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд░рдд рдХрд░рддреЗ рджреБрднрд╛рд╖реЗ:

  • рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╡рд╛рдкрд░реВрди рдбреЛрдХреЗ рдЖрдгрд┐ рд╢рд░реАрд░рд╛рдд рд╡рд┐рднрд╛рдЬрд┐рдд рдХреЗрд▓реЗ рдЖрд╣реЗ ReqParseN2(str)
  • рд╣реЗрдб рдШрдЯрдХрд╛рдВрдордзреНрдпреЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддреЗ рдЖрдгрд┐ ReqParseHead(head) рд╡рд╛рдкрд░реВрди рдХрдорд╛рдВрдб рд╕реНрд▓рд╛рдЗрд╕рдордзреНрдпреЗ рдареЗрд╡рд▓реЗ рдЬрд╛рддреЗ.
  • ╨Т рд╕реНрд╡рд┐рдЪ (рдЖрджреЗрд╢[0]) рдкреНрд░рд╛рдкреНрдд рдЖрджреЗрд╢ рдирд┐рд╡рдбрд╛ (cmd, рдХреА, рдкрддреНрддрд╛ рдХрд┐рдВрд╡рд╛ рд╡рд┐рднрд╛рдЧ рдЯреНрд░рд┐рдЧрд░ рдХреЗрд▓рд╛ рдЖрд╣реЗ рдбреАрдлреЙрд▓реНрдЯ)
  • cmd рдордзреНрдпреЗ 2 рдХрдорд╛рдВрдб рддрдкрд╛рд╕рд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд рд╕реНрд╡рд┐рдЪ(рдЖрджреЗрд╢[1]) тАФ рд▓рд╛рдВрдмреА ╨╕ рдкреНрд░рд╛рдкреНрддреА.
  • рд▓рд╛рдВрдмреА рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рддрдкрд╛рд╕рддреЛ рдЖрдЬреНрдЮрд╛[2] рдЖрдгрд┐ рддреНрдпрд╛рдд рдЬрддрди рдХрд░рддреЗ рдбреЗрдЯрд╛рдЯрд╛рдЗрдк
  • рддреЗ рддрдкрд╛рд╕рддреЛ рд╢рд░реАрд░ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореВрд▓реНрдп рдЖрд╣реЗ
    len(body) < 1
  • рдкреНрд░рддрд┐рд╕рд╛рдж рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд┐рд│рд╡рддреЗ:
    "result:bufferlength:" + datatype + "/" + body
  • рдкреНрд░рд╛рдкреНрддреА рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд░рдд рдХрд░рддреЗ
    return "result:version/auto"

рджреБрднрд╛рд╖реЗ

рдЗрдВрдЯрд░рдкреНрд░реАрдЯреЗрдбреЗрдЯрд╛ рд╕реНрдЯреНрд░рдХреНрдЪрд░ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗ рдЖрдгрд┐ рддреЗ рдорд┐рд│рд╡рд▓реЗрд▓реНрдпрд╛ рдбреЗрдЯрд╛рдЪреА рджреБрдпреНрдпрдо рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рддреЗ рдирд┐рд╡рдб рддрд╛рд░ рдЖрдгрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдирд┐рд░реНрдорд┐рддреА рдбреЗрдЯрд╛рдЪрд╛ рдЕрд░реНрде рд▓рд╛рд╡рд╛.

type InterpreteData struct {
	Head string
	Commands []string
	Body string
	IsErr bool
	ErrCode int 
	ErrMessage string
}

рдХрд╛рд░реНрдп

Interprete(str string) (*InterpreteData, error)

рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реНрд╡реАрдХрд╛рд░рддреЗ рдкрд░рд┐рдгрд╛рдо рдЖрдгрд┐ рдСрдмреНрдЬреЗрдХреНрдЯрдЪрд╛ рд╕рдВрджрд░реНрдн рддрдпрд╛рд░ рдХрд░рддреЛ рдЖрдгрд┐ рдкрд░рдд рдХрд░рддреЛ рдбреЗрдЯрд╛рдЪрд╛ рдЕрд░реНрде рд▓рд╛рд╡рд╛.

рдкреНрд░рдЧрддреА:

  • рддреНрдпрд╛рдЪрдкреНрд░рдорд╛рдгреЗ рдирд┐рд╡рдб рд╡рд╛рдкрд░реВрди рдбреЛрдХреЗ рдЖрдгрд┐ рд╢рд░реАрд░ рдХрд╛рдврд▓реЗ рдЬрд╛рддрд╛рдд ReqParseN2(str)
  • рд╡рд╛рдкрд░реВрди рдбреЛрдХреЗ рдШрдЯрдХрд╛рдВрдордзреНрдпреЗ рд╡рд┐рднрд╛рдЧрд▓реЗ рдЖрд╣реЗ ReqParseHead(рдбреЛрдХреЗ)
  • рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рд╛рд░рдВрдн рдХреЗрд▓рд╛ рдЖрд╣реЗ рдбреЗрдЯрд╛рдЪрд╛ рдЕрд░реНрде рд▓рд╛рд╡рд╛ рдЖрдгрд┐ рддреНрдпрд╛рд╡рд░ рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдкрд░рдд рдХреЗрд▓рд╛ рдЬрд╛рддреЛ:

res := &InterpreteData{
	Head: head,
	Commands: commands,
	Body: body,
}
return res, nil

рдордзреНрдпреЗ рд╣реА рд╡рд╕реНрддреВ рд╡рд╛рдкрд░рд▓реА рдЬрд╛рддреЗ рд╕рд░реНрд╡реНрд╣рд░.рдЧреЛ рдореБрдЦреНрдп рдкреЕрдХреЗрдЬ.

рдХреНрд▓рд╛рдпрдВрдЯ

рдХреНрд▓рд╛рдпрдВрдЯ рдкреЕрдХреЗрдЬрдордзреНрдпреЗ рдлрдВрдХреНрд╢рдиреНрд╕ рдЕрд╕рддрд╛рдд TCPConnect ╨╕ TCPresponseData.

рдХрд╛рд░реНрдп

TCPConnect(s *types.Settings, data []byte, payload []byte)

рдЕрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ:

  • рдкрд╛рд╕ рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╕реЗрдЯрд┐рдВрдЧреНрдЬ рдСрдмреНрдЬреЗрдХреНрдЯрдордзреНрдпреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдХрдиреЗрдХреНрд╢рдирд╢реА рдХрдиреЗрдХреНрд╢рди рдХреЗрд▓реЗ рдЬрд╛рддреЗ
    net.Dial("tcp", s.Host + ":" + s.Port)
  • рдбреЗрдЯрд╛ рдкреЕрд░рд╛рдореАрдЯрд░рдордзреНрдпреЗ рдкрд╛рд╕ рдХреЗрд▓реЗрд▓рд╛ рдбреЗрдЯрд╛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рддреЛ:
    conn.Write(data)
  • рдЙрддреНрддрд░ рд╡рд╛рдЪрд▓реЗ рдЖрд╣реЗ
    resp, n, _ := TCPResponseData(conn, s.BufSize)

    рдЖрдгрд┐ рдХрдиреНрд╕реЛрд▓рд╡рд░ рдЫрд╛рдкрд▓реЗрд▓реЗ

    fmt.Println(string(resp[:n]))
  • рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХреЗрд▓реНрдпрд╛рд╕ рдкреЗрд▓реЛрдб рдирдВрддрд░ рдкреБрдвреЗ рдЬрд╛рддреЛ
    conn.Write(payload)

    рдЖрдгрд┐ рд╕рд░реНрд╡реНрд╣рд░ рдкреНрд░рддрд┐рд╕рд╛рдж рджреЗрдЦреАрд▓ рд╡рд╛рдЪрддреЛ, рдХрдиреНрд╕реЛрд▓рд╡рд░ рдореБрджреНрд░рд┐рдд рдХрд░рддреЛ

рдХрд╛рд░реНрдп

 TCPResponseData(conn net.Conn, bufsiz int) ([]byte, int, error)

рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЖрдХрд╛рд░рд╛рдЪрд╛ рдмрдлрд░ рддрдпрд╛рд░ рдХрд░рддреЛ, рддреЗрдереЗ рд╕рд░реНрд╡реНрд╣рд░рдЪрд╛ рдкреНрд░рддрд┐рд╕рд╛рдж рд╡рд╛рдЪрддреЛ рдЖрдгрд┐ рд╣рд╛ рдмрдлрд░ рдЖрдгрд┐ рд╡рд╛рдЪрд▓реЗрд▓реНрдпрд╛ рдмрд╛рдЗрдЯреНрд╕рдЪреА рд╕рдВрдЦреНрдпрд╛ рддрд╕реЗрдЪ рдПрд░рд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░рдд рдХрд░рддреЛ.

рдХреНрд▓рд╛рдпрдВрдЯ рд╕рдмрд░реВрдЯреАрди

рдиреЛрдб рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рдЖрджреЗрд╢ рдкрд╛рдард╡рд┐рдгреНрдпрд╛рд╕, рддрд╕реЗрдЪ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЖрдХрдбреЗрд╡рд╛рд░реА рдЖрдгрд┐ рдЪрд╛рдЪрдгреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХрд╛рд░реНрдп рдХрд░рддреЗ.

рдЦрд╛рд▓реАрд▓ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рд╕реНрд╡реАрдХрд╛рд░реВ рд╢рдХрддрд╛рдд: JSON рдлреЙрд░рдореЕрдЯрдордзреАрд▓ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдлрд╛рдЗрд▓, рд╕рд░реНрд╡реНрд╣рд░рд▓рд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореНрд╣рдгреВрди рдкрд╛рдард╡рд╛рдпрдЪрд╛ рдбреЗрдЯрд╛, рдкреЗрд▓реЛрдбрд╡рд░ рдкрд╛рдард╡рд▓реНрдпрд╛ рдЬрд╛рдгрд╛рд░реНтАНрдпрд╛ рдлрд╛рдЗрд▓рдЪрд╛ рдорд╛рд░реНрдЧ, рдиреЛрдб рд╢реЗрдбреНрдпреВрд▓рд░ рдЗрдореНрдпреБрд▓реЗрд╢рди рдзреНрд╡рдЬ, рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдореВрд▓реНрдп рдореНрд╣рдгреВрди рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ рдбреЗрдЯрд╛рдЪрд╛ рдкреНрд░рдХрд╛рд░.

  • рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдорд┐рд│рд╡рдд рдЖрд╣реЗ
    st := types.ParseConfig(*config)
  • рдЗрдореВ рдзреНрд╡рдЬ рдкрд╛рд╕ рдЭрд╛рд▓реНрдпрд╛рд╕, рддреЗ рд╕реБрд░реВ рд╣реЛрддреЗ рд╢реЗрдбреНрдпреБрд▓рд░
  • рдЬрд░ рдлрд╛рдИрд▓рдЪрд╛ рдорд╛рд░реНрдЧ рджрд░реНрд╢рд╡рд┐рдгрд╛рд░рд╛ f рдзреНрд╡рдЬ рдкреБрд░рд╡рд▓рд╛ рдЕрд╕реЗрд▓, рддрд░ рдЖрдореНрд╣реА рддреНрдпрд╛рдЪрд╛ рдбреЗрдЯрд╛ рддреНрдпрд╛рдд рд▓реЛрдб рдХрд░рддреЛ fdb рдЖрдгрд┐ рд╕рд╛рдордЧреНрд░реА рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рдкрд╛рдард╡рд┐рд▓реА рдЬрд╛рддреЗ
    client.TCPConnect(st, []byte(CMD_BUFFER_LENGTH + ":" + strconv.Itoa(*t) + "/" + strconv.Itoa(fdblen)), fdb)
  • рдЬрд░ рдлрд╛рдЗрд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реЗрд▓реА рдирд╕реЗрд▓, рддрд░ рдзреНрд╡рдЬрд╛рддреАрд▓ рдбреЗрдЯрд╛ рдлрдХреНрдд рдкрд╛рдард╡рд┐рд▓рд╛ рдЬрд╛рддреЛ -d:
    client.TCPConnect(st, []byte(*data), nil)

рд╣реЗ рд╕рд░реНрд╡ рдкреНрд░реЛрдЯреЛрдХреЙрд▓рдЪреА рд░рдЪрдирд╛ рджрд░реНрд╢рд╡рд┐рдгрд╛рд░реЗ рдПрдХ рд╕рд░рд▓реАрдХреГрдд рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдЖрд╣реЗ. рд╡рд┐рдХрд╛рд╕рд╛рджрд░рдореНрдпрд╛рди, рддреНрдпрд╛рдЪреНрдпрд╛ рд╕рдВрд░рдЪрдиреЗрдд рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд▓реА рдЬрд╛рддреЗ.

рджреБрд╕рд▒реНрдпрд╛ рднрд╛рдЧрд╛рдд рдореА рдмреНрд▓реЙрдХреНрд╕ рдЖрдгрд┐ рдЯреНрд░рд╛рдиреНрдЭреЕрдХреНрд╢рдиреНрд╕рд╕рд╛рдареА рдбреЗрдЯрд╛ рд╕реНрдЯреНрд░рдХреНрдЪрд░реНрд╕рдмрджреНрджрд▓ рдмреЛрд▓реЗрди, 3 рдордзреНрдпреЗ JavaScript рд╡рд░реВрди рдХрдиреЗрдХреНрдЯ рд╣реЛрдгреНрдпрд╛рд╕рд╛рдареА рд╡реЗрдмрд╕реЙрдХреЗрдЯ рд╕рд░реНрд╡реНрд╣рд░рдмрджреНрджрд▓, 4 рдордзреНрдпреЗ рдореА рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЭреЗрд╢рди рд╢реЗрдбреНрдпреВрд▓рд░, рдирдВрддрд░ рдПрдХ рд╕реНрдЯреЕрдХ рдорд╢реАрди рдЬреЗ рдЗрдирдкреБрдЯ рдЖрдгрд┐ рдЖрдЙрдЯрдкреБрдЯ, рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рдЖрдгрд┐ рдЖрдЙрдЯрдкреБрдЯрдордзреВрди рдмрд╛рдпрдХреЛрдбрд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рддреЗ. рдЖрдЙрдЯрдкреБрдЯрд╕рд╛рдареА рдкреВрд▓.

рд╕реНрддреНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛