學習Go語言中的網路程式設計函數並實作WebSocket伺服器即時通訊
在當今網路的時代,即時通訊在許多應用中變得越來越重要。為了實現即時通信,許多開發者會選擇使用WebSocket協議,因為它提供了一種能夠在客戶端和伺服器之間實現雙向通訊的方式。在這篇文章中,我們將學習Go語言中的網路程式設計函數,並使用它來實作一個簡單的WebSocket伺服器來進行即時通訊。
在開始之前,我們需要先安裝Go語言的開發環境。這裡不再贅述,如果你還沒安裝,請參考Go語言官方網站來安裝。
首先,我們需要使用Go語言的net/http套件來建立一個基本的HTTP伺服器,然後使用gorilla/websocket套件來處理與客戶端的WebSocket連線。
import ( "log" "net/http" "github.com/gorilla/websocket" )
var upgrader = websocket.Upgrader{ ReadBufferSize: 1024, WriteBufferSize: 1024, }
func wsHandler(w http.ResponseWriter, r *http.Request) { conn, err := upgrader.Upgrade(w, r, nil) if err != nil { log.Println(err) return } for { messageType, message, err := conn.ReadMessage() if err != nil { log.Println(err) return } log.Printf("Received message: %s ", message) if err := conn.WriteMessage(messageType, message); err != nil { log.Println(err) return } } }
func helloHandler(w http.ResponseWriter, r *http.Request) { http.ServeFile(w, r, "index.html") }
func main() { http.HandleFunc("/ws", wsHandler) http.HandleFunc("/", helloHandler) log.Println("Server starting on localhost:8080") http.ListenAndServe(":8080", nil) }
<!DOCTYPE html> <html> <head> <title>WebSocket Example</title> <script> var socket = new WebSocket("ws://localhost:8080/ws"); socket.onopen = function(event) { console.log("Connection opened."); }; socket.onmessage = function(event) { console.log("Received message: " + event.data); }; socket.onclose = function(event) { console.log("Connection closed."); }; socket.onerror = function(event) { console.log("Error: " + event.data); }; function sendMessage() { var message = document.getElementById("message").value; socket.send(message); console.log("Sent message: " + message); } </script> </head> <body> <input type="text" id="message" placeholder="Type a message"> <button onclick="sendMessage()">Send</button> </body> </html>
以上是學習Go語言中的網路程式設計函數並實現WebSocket伺服器即時通訊?的詳細內容。更多資訊請關注PHP中文網其他相關文章!