Websocket: рдЕрдкрдЧреНрд░реЗрдб: рд╡реЗрдмрд╕реЛрдХреЗрдЯ: рдЕрдкрдЧреНрд░реЗрдбрд░ рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд░реЛрдз рдХреА рдЙрддреНрдкрддреНрддрд┐ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИред рдЪреЗрдХрдСрд░рд┐рдЬрд┐рди

рдХреЛ рдирд┐рд░реНрдорд┐рдд 23 рдорд╛рд░реНрдЪ 2018  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: gorilla/websocket

рдореИрдВ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рдЧреВрдВрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рддреНрд░реБрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рдХреНрдпрд╛ рдЖрдк рдореЗрд░реА рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдореИрдВ рдЧреЛрд▓рд╛рдВрдЧ рдореЗрдВ рдЗрддрдирд╛ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реВрдБ
`рдкреИрдХреЗрдЬ рдореБрдЦреНрдп

рдЖрдпрд╛рдд (
"рдЭрдВрдбрд╛"
"рд▓реЙрдЧ"
"рдиреЗрдЯ/http"

"github.com/gorilla/websocket"

)

var addr = flag.String ("addr", ":80", "http рд╕реЗрд╡рд╛ рдкрддрд╛")

рд╡рд░ рдЕрдкрдЧреНрд░реЗрдбрд░ = websocket.Upgrader{} // рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

func рдЗрдХреЛ (w http.ResponseWriter, r *http.Request) {
рд╕реА, рдЧрд▓рддреА: = рдЕрдкрдЧреНрд░реЗрдбрд░ред рдЕрдкрдЧреНрд░реЗрдб (рдбрдмреНрд▓реНрдпреВ, рдЖрд░, рд╢реВрдиреНрдп)
рдЕрдЧрд░ рдЧрд▓рддреА!= рд╢реВрдиреНрдп {
рд▓реЙрдЧред рдкреНрд░рд┐рдВрдЯ ("рдЕрдкрдЧреНрд░реЗрдб:", рдЗрд░реЗрдЯ)
рд╡рд╛рдкрд╕реА
}
рдЖрд╕реНрдердЧрд┐рдд рдЧ. рдмрдВрдж рдХрд░реЗрдВ ()
рдХреЗ рд▓рд┐рдпреЗ {
рдореАрдЯреНрд░рд┐рдХ рдЯрди, рд╕рдВрджреЗрд╢, рддреНрд░реБрдЯрд┐: = c.ReadMessage ()
рдЕрдЧрд░ рдЧрд▓рддреА!= рд╢реВрдиреНрдп {
log.Println ("рдкрдврд╝реЗрдВ:", рддреНрд░реБрдЯрд┐)
рдЯреВрдЯрдирд╛
}
рд▓реЙрдЧред рдкреНрд░рд┐рдВрдЯрдл ("рдЖрд░рдИрд╕реАрд╡реА:% s", рд╕рдВрджреЗрд╢)
рдЗрд░реЗрдЯ = c.WriteMessage (рдПрдордЯреА, рд╕рдВрджреЗрд╢)
рдЕрдЧрд░ рдЧрд▓рддреА!= рд╢реВрдиреНрдп {
log.Println ("рд▓рд┐рдЦреЗрдВ:", рддреНрд░реБрдЯрд┐)
рдЯреВрдЯрдирд╛
}
}
}

func рдореБрдЦреНрдп () {
рдЭрдВрдбрд╛ред рдкрд╛рд░реНрд╕ ()
рд▓реЙрдЧ.рд╕реЗрдЯрдлреНрд▓реИрдЧреНрд╕(0)
http.HandleFunc ("/", рдЗрдХреЛ)
log.Fatal(http.ListenAndServe(*addr, nil))
}`

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рдУрд░рд┐рдЬрд┐рди рдкрд░ return true рдЖрдБрдЦ рдмрдВрдж рдХрд░рдХреЗ рднрд░реЛрд╕рд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╕реНрд╡реАрдХреГрдд рдореВрд▓ рдХреА рд╕реВрдЪреА рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рд░реЗрдВрдЬ рд░рдЦреЗрдВред

рд╕рднреА 4 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рджреЗрдЦреЗрдВ https://godoc.org/github.com/gorilla/websocket#hdr -Origin_Considerationsред

рдЪреЗрдХ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ: рдЪреЗрдХрдСрд░рд┐рдЬрд┐рди: func(r *http.Request) рдмреВрд▓ {
рд╕рдЪ рд▓реМрдЯреЛ
},

"рдЕрдкрдЧреНрд░реЗрдбрд░ред рдЪреЗрдХрдСрд░рд┐рдЬрд┐рди = рдлрдВрдХ (рдЖрд░ *http.Request) рдмреВрд▓ {рд░рд┐рдЯрд░реНрди рдЯреНрд░реВ}" рдХреЛ "рдХреЙрди, рдЗрд░реЗрдЯ: = рдЕрдкрдЧреНрд░реЗрдбрд░ред рдЕрдкрдЧреНрд░реЗрдб (рдбрдмреНрд▓реНрдпреВ, рдЖрд░, рд╢реВрдиреНрдп)" рд╕реЗ рдкрд╣рд▓реЗ рдбрд╛рд▓реЗрдВред

рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рдУрд░рд┐рдЬрд┐рди рдкрд░ return true рдЖрдБрдЦ рдмрдВрдж рдХрд░рдХреЗ рднрд░реЛрд╕рд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╕реНрд╡реАрдХреГрдд рдореВрд▓ рдХреА рд╕реВрдЪреА рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рд░реЗрдВрдЬ рд░рдЦреЗрдВред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕