美文网首页
go websocket

go websocket

作者: 哆啦在这A梦在哪 | 来源:发表于2018-07-12 09:57 被阅读71次

获得相应包支持:go get golang.org/x/net/websocket

package main

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

func main() {
    log.Println(os.Args[0]) //第一个参数,显示文件路径
    http.Handle("/", websocket.Handler(Echo))
    if err := http.ListenAndServe(":8088", nil); err != nil {
        log.Println(err)
    }
}

func Echo(ws *websocket.Conn) {
    for {
        var raply string
        if err := websocket.Message.Receive(ws, &raply); err != nil { //get infomation,write in adress
            log.Println("can't receive")
            break
        }
        msg := "Received:" + raply
        log.Println(msg)
        if err := websocket.Message.Send(ws, "come back infomation"); err != nil { //send infomation
            log.Println("can't send")
            break
        }
    }
}

解释:
(1)http.Handle("/", websocket.Handler(Echo))
主函数中的handle函数,将路由和相关的方法联系起来,不过要经过转化
(2)func Echo(ws *websocket.Conn)
这个函数中实现了逻辑的实行,for循环一直处理用户请求
其中: websocket.Message.Receive(ws, &raply)实现了数据的接收,存入对应的内存地址。
websocket.Message.Send(ws, "come back infomation")发送相应的数据,前台可以接收这个数据。

以下是前台模拟
192.168.149.1是我自己电脑的IP,根据自己的IP不同,提交的地址不一样,在这里改成自己的IP地址或者想要提交的服务器地址即可

<html>
    <head>
        <title></title>
    </head>
    <body>
        <script>
        var sock=null
        var wxurl="ws://192.168.149.1:8088"
        window.onload=function(){
            sock= new WebSocket(wxurl)
            sock.onopen = function(){
                console.log("connect to "+wxurl)
            }
            sock.onmessage = function(e){
                console.log("message:"+e.data)
                alert(e.data)
                $("#cs").text(e.data)
            }
            sock.onclose = function(e){
                console.log("close:"+e.code)
            }
        }

        function send(){
            var msg = document.getElementById("ms").value
        sock.send(msg)
        }
        </script>
        <form>
            <input id="ms" type="text" value="hello word" >
           <label id="cs"></label>
        </form>
        <button onclick="send()" >push</button>
    </body>
</html>

相关文章

  • go+gin+websocket实现轮询

    go+gin+webSocket实现轮询 js[^webSocket实时获取系统时间] go router ser...

  • go websocket 问题(Hijacker)

    go websocket 问题(Hijacker) 在写websocket包的时候发现一个比较有趣问题!go 使用...

  • 在 go 中实现 websocket 服务

    目标:了解 websocket ,能够使用 golang 来实现 websocket 服务 要求:了解 go 基本...

  • go

    我们使用golang构建websocket,支持高性能、高并发,websocket不用多介绍,go自带原生webs...

  • go websocket

    获得相应包支持:go get golang.org/x/net/websocket 解释:(1)http.Hand...

  • Golang + Socket.io

    在 Go 中使用 Socket.IO The WebSocket Protocol https://tools.i...

  • go实现websocket

    用go实现一个简单的websocke的简单demo 1、服务端 2、客户端 3运行的效果

  • GO 踩坑入门篇

    GO-口吐芬芳 最近有个项目要用socket做前后端交互, 看到 go websocket 居然支撑 单服务器10...

  • Golang Websocket 简易实现+Socket.io演

    造轮子 Websocket 现在就 Go MD: 2019‎年‎12‎月17‎日,‏‎03:45:10https:...

  • GO 配置Websocket范例

    直接使用http.handler("/", websocket.Handler(ChatroomServer))这...

网友评论

      本文标题:go websocket

      本文链接:https://www.haomeiwen.com/subject/jgjlpftx.html