golang Websocket-Entwicklungshandbuch: Implementierung der Online-Bearbeitungsfunktion für mehrere Personen

WBOY
Freigeben: 2023-12-02 13:42:19
Original
705 Leute haben es durchsucht

golang Websocket开发指南:实现多人在线编辑功能

Golang Websocket-Entwicklungsleitfaden: Implementierung der Online-Bearbeitungsfunktion für mehrere Personen

Übersicht:
Mit der rasanten Entwicklung des Internets hat die Entwicklung von Webanwendungen immer mehr Aufmerksamkeit auf sich gezogen. Insbesondere müssen einige Anwendungen die Funktion der gemeinsamen Online-Bearbeitung durch mehrere Personen implementieren. Eine einfache und effektive Möglichkeit, dies zu erreichen, ist die Verwendung von Websocket.

Websocket ist ein Vollduplex-Kommunikationsprotokoll, das auf dem TCP-Protokoll basiert. Es kann eine dauerhafte Verbindung zwischen dem Client und dem Server herstellen und es dem Server ermöglichen, aktiv Nachrichten an den Client zu senden. In diesem Artikel werden wir Golang verwenden, um eine einfache Online-Bearbeitungsfunktion für mehrere Personen zu implementieren, sodass mehrere Benutzer dasselbe Dokument gleichzeitig bearbeiten können.

Implementierungsschritte:

  1. Ein Golang-Projekt initialisieren
    Bevor wir beginnen, müssen wir ein Golang-Projekt initialisieren. Sie können den folgenden Befehl verwenden:

    mkdir coedit
    cd coedit
    go mod init github.com/your-username/coedit
    Nach dem Login kopieren
  2. Gorilla WebSocket-Bibliothek installieren
    Gorilla WebSocket ist eine hervorragende Golang-Bibliothek zur Implementierung der Websocket-Funktionalität. Wir können es mit dem folgenden Befehl installieren:

    go get github.com/gorilla/websocket
    Nach dem Login kopieren
  3. Erstelle einen Websocket-Server
    Zuerst müssen wir einen Websocket-Server in Golang erstellen. Erstellen Sie eine Datei mit dem Namen main.go und fügen Sie den folgenden Code hinzu: main.go的文件,并添加以下代码:

    package main
    
    import (
     "log"
     "net/http"
     "github.com/gorilla/websocket"
    )
    
    var (
     clients   = make(map[*websocket.Conn]bool) //保存所有连接的客户端
     broadcast = make(chan []byte)              //广播消息的通道
     upgrader  = websocket.Upgrader{}           //升级器
    )
    
    func main() {
     fs := http.FileServer(http.Dir("static"))
     http.Handle("/", fs)
    
     // 当有新的websocket请求时,升级连接,并处理收到的消息
     http.HandleFunc("/ws", handleConnections)
    
     // 启动广播器
     go handleMessages()
    
     log.Println("Server started on :8000")
     log.Fatal(http.ListenAndServe(":8000", nil))
    }
    
    func handleConnections(w http.ResponseWriter, r *http.Request) {
     //升级请求并检查错误
     ws, err := upgrader.Upgrade(w, r, nil)
     if err != nil {
         log.Println(err)
         return
     }
     //关闭连接
     defer ws.Close()
    
     //注册新的客户端
     clients[ws] = true
    
     for {
         var msg []byte
         //读取消息并检查错误
         _, msg, err = ws.ReadMessage()
         if err != nil {
             log.Println(err)
             delete(clients, ws)
             break
         }
         //将消息发送到广播通道
         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)
             }
         }
     }
    }
    Nach dem Login kopieren

这段代码首先导入了需要的包,然后定义了一些全局变量。handleConnections函数用于处理Websocket连接以及与之关联的消息。handleMessages函数用于从广播通道接收消息,并将消息发送给所有客户端。

  1. 创建HTML文件
    在项目根目录下创建一个名为static的文件夹,然后创建一个名为index.html的文件,并添加以下代码:

    <!DOCTYPE html>
    <html>
    <head>
     <meta charset="UTF-8">
     <title>CoEdit Online Editor</title>
     <style>
         #editor {
             width: 100%;
             height: 500px;
             font-size: 14px;
             line-height: 18px;
         }
     </style>
    </head>
    <body>
     <div id="editor"></div>
     <script>
         var socket = new WebSocket("ws://localhost:8000/ws");
         var editor = ace.edit("editor");
    
         editor.setTheme("ace/theme/twilight");
         editor.getSession().setMode("ace/mode/javascript");
    
         socket.onmessage = function(event) {
             editor.setValue(event.data);
         };
    
         editor.on("input", function() {
             socket.send(editor.getValue());
         });
     </script>
     <script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.6/ace.js"></script>
    </body>
    </html>
    Nach dem Login kopieren

这段代码创建了一个简单的文本编辑器,使用了ace库。它还创建了一个Websocket连接,并在接收到消息时更新编辑器的内容。在用户编辑文本时,会将更改的内容发送到服务器。

  1. 运行应用程序
    在终端中运行以下命令,启动应用程序:

    go run main.go
    Nach dem Login kopieren

现在,可以在浏览器中访问http://localhost:8000rrreee

Dieser Code importiert zunächst die erforderlichen Pakete und definiert dann einige globale Variablen. Die Funktion handleConnections wird verwendet, um Websocket-Verbindungen und damit verbundene Nachrichten zu verarbeiten. Die Funktion handleMessages wird verwendet, um Nachrichten vom Broadcast-Kanal zu empfangen und an alle Clients zu senden.

    HTML-Datei erstellen

    Erstellen Sie einen Ordner mit dem Namen static im Stammverzeichnis des Projekts und erstellen Sie dann einen Ordner mit dem Namen index.html Datei und fügen Sie den folgenden Code hinzu: 🎜rrreee🎜
🎜Dieser Code erstellt einen einfachen Texteditor unter Verwendung der ace-Bibliothek. Außerdem wird eine Websocket-Verbindung erstellt und der Inhalt des Editors aktualisiert, wenn Nachrichten empfangen werden. Wenn der Benutzer Text bearbeitet, werden die Änderungen an den Server gesendet. 🎜
    🎜🎜Führen Sie die Anwendung aus. 🎜Führen Sie den folgenden Befehl im Terminal aus, um die Anwendung zu starten: 🎜rrreee🎜
🎜Jetzt können Sie http://localhost in Ihrem besuchen Browser :8000, mehrere Benutzer können diese Seite gleichzeitig aufrufen und gemeinsam dasselbe Dokument bearbeiten. 🎜🎜Zusammenfassung: 🎜In diesem Artikel wird erläutert, wie Sie mit Golang und Websocket eine kollaborative Online-Bearbeitung mit mehreren Personen erreichen. Durch die Erstellung von Websocket-Servern und HTML-Seiten können Benutzer Dokumente in Echtzeit bearbeiten und teilen. Dies ist nur ein einfaches Beispiel. Sie können die Funktionalität entsprechend den tatsächlichen Anforderungen erweitern und auf der Serverseite eine Logik hinzufügen, um Bearbeitungsberechtigungen zwischen Benutzern usw. zu steuern. 🎜🎜 Durch die Implementierung der Online-Bearbeitungsfunktion für mehrere Personen auf diese Weise können die Zusammenarbeit und die Echtzeitleistung effektiv verbessert und den Benutzern ein besseres Benutzererlebnis geboten werden. Ich hoffe, dieser Artikel kann Ihnen bei der Websocket-Entwicklung helfen und Ihnen ermöglichen, diese Technologie besser anzuwenden. 🎜

Das obige ist der detaillierte Inhalt vongolang Websocket-Entwicklungshandbuch: Implementierung der Online-Bearbeitungsfunktion für mehrere Personen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage