Golang Websocket 튜토리얼: 온라인 제출 기능 개발 방법
소개:
인터넷의 급속한 발전으로 인해 실시간 통신 기능을 구현해야 하는 애플리케이션이 점점 더 많아지고 있습니다. 네트워크 애플리케이션에서 Websocket 기술은 일반적으로 사용되는 통신 프로토콜이 되었습니다. 이 기사의 목적은 독자들에게 Golang 언어를 사용하여 온라인 제출 기능을 개발하고 Websocket을 사용하여 실시간 상호 작용을 달성하는 방법을 가르치는 것입니다.
1. Websocket 소개
Websocket은 실시간 통신을 위해 브라우저와 서버 간에 지속적인 연결을 설정할 수 있는 전이중 통신 프로토콜입니다. 기존 HTTP 프로토콜과 비교하여 Websocket은 대기 시간이 낮고 처리량이 높으며 실시간 데이터를 처리하는 애플리케이션 시나리오에 적합합니다.
2. 개발 환경 설정
개발을 시작하기 전에 Golang 개발 환경을 설정해야 합니다.
관련 라이브러리 설치:
go get github.com/gorilla/websocket
3. 프로젝트 구조 설계
온라인 제출 기능을 개발하기 전에 프로젝트의 디렉터리 구조를 계획해야 합니다.
- main.go - handler.go - template - index.html
4. 코드 구현
main.go
package main import ( "html/template" "log" "net/http" "github.com/gorilla/websocket" ) var ( upgrader = websocket.Upgrader{} clients = make(map[*websocket.Conn]bool) broadcast = make(chan []byte) homeTemplate *template.Template ) func homeHandler(w http.ResponseWriter, r *http.Request) { homeTemplate.Execute(w, nil) } func websocketHandler(w http.ResponseWriter, r *http.Request) { conn, err := upgrader.Upgrade(w, r, nil) if err != nil { log.Println(err) return } defer conn.Close() clients[conn] = true for { _, msg, err := conn.ReadMessage() if err != nil { log.Println(err) delete(clients, conn) return } broadcast <- msg } } func handleMessages() { for { msg := <-broadcast for client := range clients { err := client.WriteMessage(websocket.TextMessage, msg) if err != nil { log.Println(err) client.Close() delete(clients, client) } } } } func main() { // 配置文件路径 homeTemplate = template.Must(template.ParseFiles("template/index.html")) http.HandleFunc("/", homeHandler) http.HandleFunc("/ws", websocketHandler) go handleMessages() err := http.ListenAndServe(":8080", nil) if err != nil { log.Fatal(err) } }
handler.go
package main import ( "net/http" "path/filepath" ) func homeHandler(w http.ResponseWriter, r *http.Request) { filePath, _ := filepath.Abs("template/index.html") http.ServeFile(w, r, filePath) }
template/index.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>在线投稿功能</title> </head> <body> <h1>在线投稿功能</h1> <textarea id="message-input" rows="5" cols="30"></textarea> <button id="send-btn">发送</button> <br> <ul id="message-list"></ul> </body> <script> var socket = new WebSocket("ws://localhost:8080/ws"); socket.onmessage = function (event) { var messageList = document.getElementById("message-list"); var messageItem = document.createElement("li"); messageItem.innerText = event.data; messageList.appendChild(messageItem); }; document.getElementById("send-btn").addEventListener("click", function () { var messageInput = document.getElementById("message-input"); var message = messageInput.value; socket.send(message); }); </script> </html>
5. 명령을 입력하세요 line 프로젝트 디렉터리에서 다음 명령을 실행하여 서버를 시작합니다.
go run main.go
위 내용은 golang Websocket 튜토리얼: 온라인 제출 기능을 개발하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!