Inhaltsverzeichnis
Frageninhalt
Workaround
Heim Backend-Entwicklung Golang Websocket-Server-Implementierung mithilfe der X/Net-Bibliothek Trowing 403

Websocket-Server-Implementierung mithilfe der X/Net-Bibliothek Trowing 403

Feb 13, 2024 pm 05:03 PM
Standardbibliothek

使用 x/net 库 trowing 403 的 Websocket 服务器实现

Der PHP-Editor Banana stellt Ihnen eine Methode vor, die die x/net-Bibliothek verwendet, um einen Websocket-Server zu implementieren, der einen 403-Fehler auslöst. Websocket ist ein Kommunikationsprotokoll, das eine dauerhafte Verbindung zwischen einem Client und einem Server herstellt. Ein 403-Fehler bedeutet, dass der Server die Anfrage des Clients abgelehnt hat. Durch die Verwendung der x/net-Bibliothek können wir ganz einfach einen Websocket-Server erstellen und Anfragen ablehnen, indem wir bei Bedarf einen 403-Fehler auslösen. Diese Methode ist einfach und effektiv und eignet sich für Szenarien, in denen Anfragen autorisiert oder der Zugriff eingeschränkt werden müssen.

Frageninhalt

Ich versuche, einen Websocket-Server mithilfe der x/net/websocket Standardbibliothek zu implementieren.

Meine bisherigen Versuche sind wie folgt:

package main

import (
    "fmt"
    "net/http"

    "golang.org/x/net/websocket"
)

type Server struct {
    baseUri     string
    connections map[string][]*websocket.Conn
}

func initServer(baseUri string) *Server {
    return &Server{
        baseUri: baseUri,
    }
}

func (server *Server) handleConnections() {
    http.Handle("/ws", websocket.Handler(server.listenConnections))
    http.ListenAndServe(":3000", nil)
}

func (server *Server) listenConnections(ws *websocket.Conn) {
    fmt.Println("New connection established")
    for {
        fmt.Println("FOO")
    }
}

func main() {
    server := initServer("/ws")
    server.handleConnections()
}

Nach dem Login kopieren

Versuchen Sie, mehrere WS-Clients zu verwenden, um eine Verbindung herzustellen ws://localhost:3000/ws 时,我总是收到相同的错误:403-Forbidden. Ich habe sogar das Beispiel aus der offiziellen Dokumentation ausprobiert, bekomme es aber trotzdem hin. Übersehe ich etwas Offensichtliches? Zum Beispiel eine Standard-Port-Blockierung oder so etwas in der Art?

Vielen Dank im Voraus.

BEARBEITEN: Möglicherweise müssen Sie einen anderen Port verwenden, um das Problem zu reproduzieren. Die Verwendung von 3000 in meinem Beispiel unterbricht lediglich die Ausführung des Programms, wenn es nicht verfügbar ist.

Edit 2: Sie können einen Client wie websocat verwenden und websocat 'ws://localhost:3000/ws' ausführen, um zu versuchen, eine Verbindung zum Server herzustellen

Workaround

Ich habe aufgegeben, habe aber gute Erkenntnisse: Wenn Sie wie ich sind und Anthony GGs „Anleitung zum Erstellen eines Websocket-Servers für unterwegs von Grund auf“ folgen, dann tun Sie das nicht. Video ist veraltet, und obwohl es einen guten Einblick in die Erstellung von Videos bietet, ist es am besten (und keine Schande), die Verwendung der WebSocket-Bibliothek von Gorilla zu erlernen.

Ich verwende auch, um Pfadparameter zu verwenden (ich bin mir nicht sicher, warum der http-Handler das nicht kann). Beachten Sie, wie ich

hinzugefügt habe. Wie Benutzer @Cerise in den Kommentaren betonte, befindet sich das gorilla/mux-Paket nicht in der Standardbibliothek, aber auch das bloße Hinzufügen des Origin-Headers hat das ursprüngliche Problem nicht gelöst. http.Handle 更改为 mux.Router.HandleFunc x/net/websocket 包不在标准库中,但仅添加 OriginIch hoffe, das erspart anderen Leuten wie mir die Mühe, Go zu lernen.

Das obige ist der detaillierte Inhalt vonWebsocket-Server-Implementierung mithilfe der X/Net-Bibliothek Trowing 403. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So verwenden Sie einen absoluten Wert in C++ So verwenden Sie einen absoluten Wert in C++ May 06, 2024 pm 06:15 PM

Es gibt zwei Möglichkeiten, absolute Werte in C++ zu erhalten: 1. Verwenden Sie die integrierte Funktion abs(), um den absoluten Wert eines Ganzzahl- oder Gleitkommatyps zu erhalten. 2. Verwenden Sie die generische Funktion std::abs(), um Erhalten Sie verschiedene unterstützte absolute Werte. Arbeitet mit absoluten Werten von Datentypen.

So verwenden Sie std:: in C++ So verwenden Sie std:: in C++ May 09, 2024 am 03:45 AM

std ist der Namespace in C++, der Komponenten der Standardbibliothek enthält. Um std zu verwenden, verwenden Sie die Anweisung „using namespace std;“. Die direkte Verwendung von Symbolen aus dem std-Namespace kann Ihren Code vereinfachen, wird jedoch nur bei Bedarf empfohlen, um eine Verschmutzung des Namespace zu vermeiden.

Was bedeutet Primzahl in C++? Was bedeutet Primzahl in C++? May 07, 2024 pm 11:33 PM

prime ist ein Schlüsselwort in C++, das den Primzahltyp angibt, der nur durch 1 geteilt werden kann. Es wird als boolescher Typ verwendet, um anzugeben, ob der angegebene Wert eine Primzahl ist wahr, andernfalls ist es falsch.

Was bedeutet Fabs in C++? Was bedeutet Fabs in C++? May 08, 2024 am 01:15 AM

Die Funktion fabs() ist eine mathematische Funktion in C++, die den absoluten Wert einer Gleitkommazahl berechnet, das negative Vorzeichen entfernt und einen positiven Wert zurückgibt. Es akzeptiert einen Gleitkommaparameter und gibt einen absoluten Wert vom Typ Double zurück. Fabs(-5.5) gibt beispielsweise 5,5 zurück. Diese Funktion arbeitet mit Gleitkommazahlen, deren Genauigkeit von der zugrunde liegenden Hardware beeinflusst wird.

Was bedeutet Konfiguration in Java? Was bedeutet Konfiguration in Java? May 07, 2024 am 02:39 AM

Config stellt Konfigurationsinformationen in Java dar und wird zum Anpassen des Anwendungsverhaltens verwendet. Es wird normalerweise in externen Dateien oder Datenbanken gespeichert und kann über Java Properties, PropertyResourceBundle oder Bibliotheken von Drittanbietern verwaltet werden. Umweltbewusstsein, Handhabbarkeit, Skalierbarkeit.

_komplexe Verwendung in C-Sprache _komplexe Verwendung in C-Sprache May 08, 2024 pm 01:27 PM

Der komplexe Typ wird zur Darstellung komplexer Zahlen in der C-Sprache verwendet, einschließlich Real- und Imaginärteilen. Seine Initialisierungsform ist complex_number = 3.14 + 2.71i, auf den Realteil kann über creal(complex_number) und auf den Imaginärteil über cimag(complex_number) zugegriffen werden. Dieser Typ unterstützt gängige mathematische Operationen wie Addition, Subtraktion, Multiplikation, Division und Modulo. Darüber hinaus wird eine Reihe von Funktionen zum Arbeiten mit komplexen Zahlen bereitgestellt, z. B. cpow, csqrt, cexp und csin.

Was bedeutet min in C++? Was bedeutet min in C++? May 08, 2024 am 12:51 AM

Die min-Funktion in C++ gibt das Minimum mehrerer Werte zurück. Die Syntax lautet: min(a, b), wobei a und b die zu vergleichenden Werte sind. Sie können auch eine Vergleichsfunktion angeben, um Typen zu unterstützen, die den <-Operator nicht unterstützen. C++20 hat die Funktion std::clamp eingeführt, die mindestens drei oder mehr Werte verarbeitet.

So berechnen Sie den absoluten Wert in C++ So berechnen Sie den absoluten Wert in C++ May 06, 2024 pm 06:21 PM

Es gibt drei Möglichkeiten, den Absolutwert in C++ zu ermitteln: Mit der Funktion abs() können Sie den Absolutwert jeder Art von Zahl berechnen. Mit der Funktion std::abs() können Sie den Absolutwert von Ganzzahlen, Gleitkommazahlen und komplexen Zahlen berechnen. Manuelle Berechnung absoluter Werte, geeignet für einfache ganze Zahlen.

See all articles