2

字节跳动《实时音视频通讯技术》之Go服务器端开发入门学习笔记

 3 years ago
source link: https://juejin.cn/post/6996870752297287710
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
2021年08月16日 阅读 157

字节跳动《实时音视频通讯技术》之Go服务器端开发入门学习笔记

本文已参与掘金创作者训练营第三期「高产更文」赛道,详情查看:掘力计划|创作者训练营第三期正在进行,「写」出个人影响力

本文收录于我的专栏:《让我们一起Golang》

本篇文章主要介绍Git的基础知识和基本操作,还有Go的发展历程以及与其他语言的区别,另外完成Golang综合实战-websocket客户端登陆。

字节跳动《实时音视频通讯技术》学习笔记之服务器端开发入门

Git基础知识

  • Workspace 工作区,本地目录,平时存放代码的地方
  • Index/Stage 暂存区,用于临时存放你的改动,保存即将提交的文件列表信息。
  • Repository: 仓库区(或版本库),就是安全存放数据的位置。
  • Remote: 远程仓库,托管代码的服务器,项目组中的远程服务器。

image.png

Git工具——简单使用

1. 初始化操作

//只需要执行一次

git config --global user.name "myname"

git config --global user.email "[email protected]"

git config -l //查看config信息

2. checkout远程代码

git clone https://xxx

// 将远程master分支checkout成本地feat分支

git checkout origin/master -b feat

3. 修改代码,查看diff

git diff 查看diff,也就是修改后的代码与原始的代码的区别。

git status 查看文件状态

4. 提交到本地仓库

git add filename

git commit -m "init the project"

5. push到远程仓库

//将本地mymaster分支push到远端

git push origin mymaster

6. 查看历史提交

git log xxx // 查看文件提交记录

git log ./ // 查看目录下文件的提交记录

7. 查看分支信息

git branch //查看本地分支信息

git branch -r //查看远端(remote)分枝信息

git branch -D xxx //删除本地branch

git branch -m yyy //branch修改名字

8.本地修改全部回退

git reset --hard

9. 同步远端代码到本地

git fetch

git rebase [branch]

Golang发展历程

image.png

Go名字的来源

image-20210814223914789

发展时间线

image.png

Golang对比其他语言

Go希望成为互联网时代的C语言。多数系统级语言的根本哲学来源于C++,将C++的面向对象进一步发扬光大。但是Go语言的设计者却有不同的看法,他们认为值得学习的是C语言。C语言经久不衰的根源是它足够简单。因此,Go语言也是足够简单。

  • 编译部署简单:不依赖其他库,编译出来就是一个可执行文件。

所以编译起来特别快!!!

  • 统一的编码规范,代码简介,方便阅读。
  • 严格的编译检查,不用的import或者变量引起编译错误。
  • interface不需要显式的声明
  • 内置强大的工具,如gofmt,goprof
  • 自动内存回收
  • 强一致类型
  • 没有异常处理(Error is value)
  • 基于首字母的可访问特性,例如变量首字母是大写,就是全局变量。
  • 支持直接调用C代码

image.png

p.s. Go应该是快出泛型了,博主之前翻译过一篇博客《下一步:Go泛型》就是说明的这个信息。

Golang与C语言的区别

image.png

Golang综合实战-websocket客户端登陆

websocket客户端登陆

websocket协议在2008年诞生,2011年成为国际标准.

它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息.

package main
​
import (
    "fmt"
    gosocketio "github.com/graarh/golang-socketio"
    "github.com/graarh/golang-socketio/transport"
    "time"
)
//结构体定义
type User struct {
    ID string `json:"id"`
    RoomID string `json:"room_id"`
    Name string `json:"name"`
    AvatarURL string `json:"avatarUrl"`
    Type string `json:"type"`
    Address string `json:"address"`
    LoginTime string `json:"login_time"`
}
​
func main() {
    //连接服务器
    c,err := gosocketio.Dial(
        gosocketio.GetUrl("127.0.0.1",3001,false),
        transport.GetDefaultWebsocketTransport())
    if err != nil{
        fmt.Printf("websocket connect error:%v\n",err)
        return
    }
​
    fmt.Println("connect success!")
    //注册response回调
    c.On("success", func(c *gosocketio.Channel,v interface{}) {
        fmt.Println("success:",v)
    })
    //emit信息
    go func() {
        c.Emit("login",User{
            ID : "user",
            RoomID : "roomid",
            Name : "rtcname0",
            AvatarURL: "http://q.qlogo.cn/headimg_dl?dst_uin=5684277&spec=100",
            Type : "user",
        })
​
        if err != nil{
            fmt.Println("emit error:",err)
        }
    }()
​
    time.Sleep(5*time.Second)
    fmt.Println("finished...")
}
​
复制代码

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK