1. uuid的作用

uuid是Universally Unique Identifier的缩写,即通用唯一识别码。

uuid的目的是让分布式系统中的所有元素,都能有唯一的辨识资讯,而不需要透过中央控制端来做辨识资讯的指定。如此一来,每个人都可以建立不与其它人冲突的 uuid。A universally unique identifier (UUID) is a 128-bit number used to identify information in computer systems.

2. Golang中生成uuid并在websocket中使用

目前,golang中的uuid还没有纳入标准库,因此我们使用github上的开源库:go get -u github.com/satori/go.uuid。

示例:

package main

import (
    "fmt"
    "github.com/satori/go.uuid"
)

func main() {
    // 创建
    u1 := uuid.NewV4()
    fmt.Printf("UUIDv4: %s\n", u1)

    // 解析
    u2, err := uuid.FromString("f5394eef-e576-4709-9e4b-a7c231bd34a4")
    if err != nil {
        fmt.Printf("Something gone wrong: %s", err)
        return
    }
    fmt.Printf("Successfully parsed: %s", u2)
}
  • uuid在websocket中使用:

该示例在websocket中为每一个连接的客户端分配一个uuid,golang中可以使用github.com/gorilla/websocket为我们提供的websocket开发包。

声明客户端结构体代码如下:

type Client struct {
    id     string
    socket *websocket.Conn
    send   chan []byte
}

使用代码:

client := &Client{id: uuid.NewV4().String(), socket: conn, send: make(chan []byte)}