基于Golang的WebSocket Server

Golang版本的 WebSocket已经在官方包中了,不过没有放入Go安装程序中,需要独立下载, go websocket package 下载地址: https://code.google.com/p/go/source/checkout?repo=net

如果安装了hg,通过如下方式安装: go get code.google.com/p/go.net/websocket

一个golang websocket echo server 例子如下:

 

 

package main

import (
	"code.google.com/p/go.net/websocket"
	"fmt"
	"log"
	"net/http"
)

func Echo(ws *websocket.Conn) {
	var err error

	for {
		var reply string

		if err = websocket.Message.Receive(ws, &reply); err != nil {
			fmt.Println("Can't receive")
			break
		}

		fmt.Println("Received back from client: " + reply)

		msg := "Received:  " + reply
		fmt.Println("Sending to client: " + msg)

		if err = websocket.Message.Send(ws, msg); err != nil {
			fmt.Println("Can't send")
			break
		}
	}
}

func main() {
	http.Handle("/", websocket.Handler(Echo))

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

 
客服端测试:

 
      
      

WebSocket Echo Test

Message:

发表评论?

4 条评论。

  1. 基于Golang的WebSocket Server | 世界是平的 - pingback on 2012年08月8日 在 2:24 下午
  2. 正是想要的,good

  3. 楼主你好,我直接在浏览器中打开这个客户端网页,测试了一下发现报400 bad request的错。请问客户端要怎样发起websocket的请求?

  4. C:\Go\src\test3\main.go:4:2: import “code.google.com/p/go.net/websocket”: cannot find package 貌似 “code.google.com/p/go.net/websocket”
    无法远程调用到~! 求助有何办法呢~!?

发表评论


注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Trackbacks and Pingbacks: