第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

客戶端如何從任何域名服務器(如 api)與 WebSocket 服務器進行通信

客戶端如何從任何域名服務器(如 api)與 WebSocket 服務器進行通信

Go
哆啦的時光機 2022-08-15 16:37:56
如何創(chuàng)建來自任何域名/IP 地址的任何客戶端都可以與之通信的 WebSocket 服務器。我不想為了與服務器通信而打開具有服務器提供的自定義地址的頁面。目標是能夠通過瀏覽器擴展或任何意外的終結點與 WebSocket 服務器進行通信。server.gopackage mainimport (    "fmt"    "net/http"    "github.com/gorilla/websocket")var upgrader = websocket.Upgrader{    ReadBufferSize:  1024,    WriteBufferSize: 1024,}func main() {    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {        conn, err := upgrader.Upgrade(w, r, nil)         if err != nil {           fmt.Println(err) // no error just when websocket connecte from my domain        }        for {            // Read message from browser            msgType, msg, _ := conn.ReadMessage()            // Print the message to the console            fmt.Printf("%s sent: %s\n", conn.RemoteAddr(), string(msg))            // Write message back to browser            if err = conn.WriteMessage(msgType, msg); err != nil {                return            }        }    })    http.HandleFunc("/client", func(w http.ResponseWriter, r *http.Request) { // I dont need this     http.ServeFile(w, r, "client.html")  })    http.ListenAndServe(":8080", nil)}客戶端.js<!DOCTYPE html><html>    <head>        <meta charset=utf8>        <meta name=viewoirt content="width=device-width, initial-scale=1.0">        <title>click bot</title>            </head><body><input id="input" type="text" /><button onclick="send()">Send</button><pre id="output"></pre><script>    var input = document.getElementById("input");    var output = document.getElementById("output");    var socket = new WebSocket("ws://localhost:8080/");    socket.onopen = function () {        output.innerHTML += "Status: Connected\n";    };    socket.onmessage = function (e) {        output.innerHTML += "Server: " + e.data + "\n";    };    function send() {        socket.send(input.value);        input.value = "";    }</script></body></html>當我通過鏈接或通過瀏覽器擴展注入它進行連接時,一切都很好。但是當我將其注入另一個沒有相同IP地址的頁面時,它不起作用。例如:例如,當我在控制臺中鍵入:在我的域以外的域中。localhost:8080/clientwebsocket = new webSocket('ws://localhost: 8080')
查看完整描述

1 回答

?
POPMUISE

TA貢獻1765條經(jīng)驗 獲得超5個贊

例如,當我在控制臺中鍵入內(nèi)容時:websocket = new webSocket('ws://localhost: 8080')在我的域以外的域中。


問題中的服務器代碼實現(xiàn)了同源策略。更改檢查源函數(shù)以允許來自任何源的連接:


var upgrader = websocket.Upgrader{

    ReadBufferSize:  1024,

    WriteBufferSize: 1024,

    CheckOrigin:  func(r *http.Request) bool { return true }

}

問題說,為了簡單起見,服務器代碼忽略了升級時的錯誤。如果服務器代碼記錄了錯誤,則問題會立即顯現(xiàn)出來。始終處理錯誤!


conn, err := upgrader.Upgrade(w, r, nil)

if err != nil {

    fmt.Println(err)

    return

}


查看完整回答
反對 回復 2022-08-15
  • 1 回答
  • 0 關注
  • 150 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號