The text of this text connection is: http://blog.csdn.net/freewebsys/article/details/46882777 reprint please must indicate the source!
1. About WebSocket
HTML5 defines the WebSocket protocol to better conserve server resources and bandwidth and to achieve real-time communication.
The WebSocket protocol is also implemented in JavaEE7.
In the WebSocket API, the browser and server just need to do a handshake action. Then, a high-speed channel is formed between the browser and the server.
The two are directly capable of transmitting data to each other.
References:
Http://baike.baidu.com/link?
Url=gsdxnthdo4w0js-lqdo3vol0vdtyth7ylxv1amat5cesmign5u0sbay4fmjeqoix4vawn9e4ttit3dxv2a_kgk
2, install WebSocket
Use the Golang official NET package below the WebSocket, address:
Https://github.com/golang/net
First set the Go_path variable, refer to:
http://blog.csdn.net/freewebsys/article/details/46695513
Download NET package, install WebSocket module
#所有模块下载get github.com/golang/net#做下软连接把github目录以下的映射到golang.org下,否则其它模块如html安装不上。ln -s /usr/local/go_path/src/github.com/golang/net /usr/local/go_path/src/golang.org/x/net#安装websocket模块go install golang.org/x/net/websocket
The package structure of this module is unified into Golang.org/x/net. Imported using Import "Golang.org/x/net/websocket".
Document in: (Godoc is a very good site, all Golang documents are on top.)
)
Https://godoc.org/golang.org/x/net/websocket
3. Code and execution
Code:
Https://github.com/golang-samples/websocket
Server code: Finally, it hangs on the httpserver.
Package Mainimport ("Golang.org/x/net/websocket" "FMT" "Log" "Net/http") func Echohandler (ws *websocket. Conn) {msg: = make ([]byte, +NErr: = ws. Read (msg)if Err! = Nil {Log. Fatal (Err)} FMT. Printf ("Receive:%s\n", Msg[:n]) send_msg: ="["+string(Msg[:n]) +"]"MErr: = ws. Write ([]byte (SEND_MSG))if Err! = Nil {Log. Fatal (Err)} FMT. Printf ("Send:%s\n", Msg[:m])}func Main () {http. Handle ("/echo", WebSocket. Handler (Echohandler)) http. Handle ("/", HTTP. Fileserver (http. Dir (".")))Err: = http. Listenandserve (": 8080", nil)if Err! = Nil {Panic ("Listenandserve:"+Err.Error()) }}
Clientwebsocket Calling code:
PackageMainImport("Golang.org/x/net/websocket" "FMT" "Log")varOrigin ="http://127.0.0.1:8080/"varURL ="Ws://127.0.0.1:8080/echo"funcMain () {WS, Err: = WebSocket. Dial (URL,"", origin)ifErr! =Nil{log. Fatal (ERR)} message: = []byte("Hello, world!.") _, err = ws. Write (Message)ifErr! =Nil{log. Fatal (Err)} FMT. Printf ("Send:%s\n", message)varmsg = Make([]byte, +) m, err: = ws. Read (msg)ifErr! =Nil{log. Fatal (Err)} FMT. Printf ("Receive:%s\n", msg[:m]) ws. Close ()//Close connection}
Client uses WebSocket. Dial (URL, "", origin) makes a websocket connection, but the origin parameter is not actually called.
Use WebSocket to send and receive data.
It is interesting to assume that both the client and the server are written with go, using the WebSocket object.
function calls are the same. It's just a matter of writing a read data.
4. HTML5 call
Using jquery. Using Baidu's CDN:
http://cdn.code.baidu.com/
HTML5 page Code:
<! DOCTYPE html><html><head> <meta charset="UTF-8"/> <title>Sample of WebSocket with Golang</title> <script src="Http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js" ></script> <script> $ (function () { var ws = new We Bsocket ( "Ws://localhost:8080/echo" ); Ws.onmessage = function ( e) { $ (). Text (Event.data). AppendTo ($ul); }; var $ul = $ ( ' #msg-list ' ); $ ( ' #sendBtn ' ). Click ( function () { var data = $ ( ' #name ' ). Val (); Ws.send (data); }); }); </script></head><body><input id="name" type="text"/><input type="button" id="sendbtn" value ="Send"/><ul id="Msg-list"></ul></body></html>
When the button is clicked, WebSocket receives the OnMessage event and then displays the data to the page.
The browser displays the WebSocket connection status.
5, summary
The text of this text connection is: http://blog.csdn.net/freewebsys/article/details/46882777 reprint please must indicate the source!
Using Golang to develop websocket is easy.
Very convenient. The server load is suddenly high when the server is Nodejs. and the library of Nodejs is very miscellaneous and many, it may be more troublesome to solve.
I'm still more inclined to develop with Golang.
Golang (5): Write WebSocket service, client and HTML5 call