【go语言实现一个webSocket的一个demo】

go语言实现一个webSocket的一个demo

前端代码

html 复制代码
<html lang="zh-CN">

<head></head>

<body>
<script type="text/javascript">
    // header('Access-Control-Allow-Origin:*');
    var sock = null;
    var wsuri = "ws://127.0.0.1:9999";

    window.onload = function () {

        console.log("onload");

        sock = new WebSocket(wsuri);

        sock.onopen = function () {
            console.log("connected to " + wsuri);
        }

        sock.onclose = function (e) {
            console.log("connection closed (" + e.code + ")");
        }

        sock.onmessage = function (e) {
            console.log("message received: " + e.data);
        }
    };

    function send() {
        var msg = document.getElementById('message').value;
        sock.send(msg);
    };
</script>
<h1>WebSocket Echo Test</h1>
<form>
    <p>
        Message: <input id="message" type="text" value="Hello, world!">
    </p>
</form>
<button onclick="send();">Send Message</button>
</body>

</html>

服务端

  • WebSocketServer.go
go 复制代码
package main

import (
	"fmt"
	"golang.org/x/net/websocket"
	"log"
	"net/http"
)

func main() {
	http.Handle("/", websocket.Handler(Echo)) //这里校验请求头的Origin字段
	if err := http.ListenAndServe("127.0.0.1:9999", nil); err != nil {
		log.Fatal("ListenAndServer: ", err)
	}
}

func Echo(ws *websocket.Conn) {
	var err error
	for {
		var reply string
		err = websocket.Message.Receive(ws, &reply)
		if err != nil {
			fmt.Println("Can't receive data...")
			break
		}
		fmt.Println("Receive back from client:" + reply)
		msg := "Receive: " + "接受到客户端的消息,ok"
		fmt.Println("Sending to client: " + msg)

		err = websocket.Message.Send(ws, msg)
		if err != nil {
			fmt.Println("发送消息失败")
			break
		}

	}

}
相关推荐
脏脏a1 小时前
延迟与画质:远程控制的生命线
开发语言·php
像风一样的男人@1 小时前
python --基于scp的文件传输助手
开发语言·python
一条破秋裤1 小时前
SDIO Wi‑Fi 设备的驱动向insmod + 反向rmmod
开发语言·php
m0_639906942 小时前
Java 重写 Override 与重载 Overload 区别、访问修饰符、static 关键字
java·开发语言
Evand J2 小时前
【MATLAB例程】平面下,5基站对待定位点的定位。基于距离辅助下的AOA。完整代码下载链接
开发语言·matlab·平面·定位·导航·测距·aoa
GIS数据转换器2 小时前
基于CIM的城市智慧供热监管服务平台
java·大数据·开发语言·人工智能·后端·物联网·struts
weixin_417396832 小时前
星级酒店境外电视频道怎么合法接入?合规要点与核对清单
开发语言·前端·php·1024程序员节·综合布线
熊猫钓鱼>_>2 小时前
鸿蒙PC构建实战:hvigor modelVersion 降级 + schema 清理 + ArkTS 编译三连坑完整复盘
开发语言·华为·ai编程·harmonyos·openharmony·数据·ai生成
FRing032 小时前
JavaScript入门到精通三十一(原型继承、原型链)
开发语言·前端·javascript
1024奇点3 小时前
【仓颉语言入门 · 第二篇 第 12 课】
开发语言·数据库·ide·mysql·开源