websocket:如何建立在同一台client和同一台server创建多个连接

最近一直纠结到底能不能在同一台服务器上和同一个客户端建立多个通讯连接,经过查阅大量的网页资料+亲自实践证明确实可以这样做,但是他们如何通讯?下面是相关代码:

Server.go 。。。。。。。。。。。。。。。。。。。。。。。。

    package main
    import (
        "flag"
        "fmt"
        "log"
        "net/http"

        "github.com/gorilla/websocket"

        "tttest/pubvisit"
        "tttest/pubvisit/MapTable"
    )

    var upgrader = websocket.Upgrader{
            ReadBufferSize:  4096,
            WriteBufferSize: 4096,
    }

    func main() {

        var addr = flag.String("addr", ":8000", "http service address")

        http.HandleFunc("/Connection", Connection)
        fmt.Println("Test Server Start...")

        err := http.ListenAndServe(*addr, nil)
        if err != nil {
            log.Fatal("ListenAndServe: ", err)
        }

    }

    func Connection(w http.ResponseWriter, r *http.Request) {

        conn, err := upgrader.Upgrade(w, r, nil)
        if err != nil {
            log.Println("Upgrade:", err)
        }
        defer conn.Close()

        for {

            info := pubvisit.ReadFromMsg(conn)
            MapTable.SaveConn(conn, info.Name)

            switch info.Name {
            case "Jhon":
                var jres pubvisit.Message
                jres.Name = info.Name
                jres.Phone 
WebSocket是一种在单个TCP连接上进行全双工通信的协议,它允许服务器主动向客户端推送信息。创建WebSocket客户端和服务端来建立连接,通常涉及以下步骤: 1. **WebSocket服务端创建**: - 首先,需要选择一个支持WebSocket的服务器端语言和框架,比如Node.js、Java、Python等。 - 在服务器端,使用相应的库或框架提供的API创建WebSocket服务,监听一个端口来接收来自客户端连接请求。 - 一旦有客户端连接,服务器就可以根据需要向客户端发送消息。 2. **WebSocket客户端创建**: - 在客户端(例如浏览器中的JavaScript),同样需要使用WebSocket相关的API来建立与服务端的连接。 - 通过指定服务端的WebSocket URL来初始化一个WebSocket连接。 - 客户端连接建立后,可以监听服务端发来的消息,并可以发送消息到服务端。 3. **消息的发送与接收**: - 在服务端和客户端建立连接后,双方都可以发送消息。 - 客户端可以使用`socket.send()`方法发送消息到服务端,服务端也可以使用类似的方法发送消息到客户端。 - 双方都需要监听消息事件来接收对方发送过来的数据。 4. **连接的关闭**: - 当不再需要连接时,可以通过调用`socket.close()`方法来关闭WebSocket连接。 下面是一个简单的示例: **Node.js WebSocket服务端示例代码**: ```javascript const WebSocket = require('ws'); const wss = new WebSocket.Server({ port: 8080 }); wss.on('connection', function connection(ws) { ws.on('message', function incoming(message) { console.log('received: %s', message); ws.send('echo: ' + message); }); ws.send('Hello Client!'); }); ``` **HTML5 WebSocket客户端示例代码**: ```html <!DOCTYPE html> <html> <head> <title>WebSocket Client</title> </head> <body> <script> var socket = new WebSocket('ws://localhost:8080'); socket.onmessage = function(event) { var message = event.data; console.log('received: %s', message); }; socket.onopen = function(event) { socket.send('Hello Server!'); }; </script> </body> </html> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值