go 服务器demo代码如下:
package main
import (
"fmt"
"log"
"net/http"
"sync"
"github.com/gorilla/websocket"
)
var upgrader = websocket.Upgrader{
ReadBufferSize: 1024,
WriteBufferSize: 1024,
CheckOrigin: func(r *http.Request) bool {
// 允许来自任何源的连接,或者根据你的需求设置
return true
},
}
const (
MaxConnections = 1000 //最大并发连接数;
)
var (
g_semaphore = make(chan struct{}, MaxConnections) //信号量;
g_waitGroup sync.WaitGroup //计数器;
)
func newConn(conn *websocket.Conn) {
defer g_waitGroup.Done() //计数器-1;
defer func() { <-g_semaphore }() //释放一个信号量;
//
defer conn.Close()
for {
// 读取客户端发来的消息
_, message, err := conn.ReadMessage()
if err != nil {
log.Println("read err: ", err)
break
}
fmt.Printf("received: %s\n", message)
// 发送消息给客户端
// err = conn.WriteMessage(websocket.TextMessage,