怎么使用Go语言实现WebSocket通信

26次阅读
没有评论

共计 1331 个字符,预计需要花费 4 分钟才能阅读完成。

在 Go 语言中实现 WebSocket 通信,可以使用标准库中提供的 net/httpgithub.com/gorilla/websocket包。以下是一个简单的示例:

package main

import ("fmt"
	"net/http"

	"github.com/gorilla/websocket"
)

var upgrader = websocket.Upgrader{CheckOrigin: func(r *http.Request) bool {return true
	},
}

func handler(w http.ResponseWriter, r *http.Request) {conn, err := upgrader.Upgrade(w, r, nil)
	if err != nil {fmt.Println("Error upgrading to WebSocket:", err)
		return
	}

	for {// 读取客户端发送的消息
		_, message, err := conn.ReadMessage()
		if err != nil {fmt.Println("Error reading message:", err)
			break
		}

		// 输出客户端发送的消息
		fmt.Printf("Received message: %s\n", message)

		// 发送消息给客户端
		err = conn.WriteMessage(websocket.TextMessage, []byte("Message received"))
		if err != nil {fmt.Println("Error writing message:", err)
			break
		}
	}
}

func main() {http.HandleFunc("/", handler)
	http.ListenAndServe(":8080", nil)
}

在上面的代码中,我们首先创建了一个 upgrader 实例,用于将 HTTP 连接升级为 WebSocket 连接。然后定义了一个处理函数 handler,当有客户端连接时会调用该函数。在处理函数中,我们通过upgrader.Upgrade 方法将 HTTP 连接升级为 WebSocket 连接,并通过 conn.ReadMessage 读取客户端发送的消息,然后通过 conn.WriteMessage 发送消息给客户端。

最后在 main 函数中,我们通过 http.HandleFunc 将处理函数注册到路由上,然后通过 http.ListenAndServe 启动 HTTP 服务器,监听在 8080 端口上。

在客户端可以使用 JavaScript 来与该 WebSocket 服务器进行通信,例如:

const ws = new WebSocket("ws://localhost:8080/");

ws.onopen = function() {console.log("Connected to WebSocket server");
    ws.send("Hello, server!");
};

ws.onmessage = function(event) {console.log("Received message from server:", event.data);
};

通过这种方式,可以使用 Go 语言实现 WebSocket 通信。

丸趣 TV 网 – 提供最优质的资源集合!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2024-04-15发表,共计1331字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)