1 package main2 3 import (4 "code.google.com/p/go.net/websocket"5 6 "fmt"7 "io"8 "net/http"9 )10 11 func Echo(ws*websocket.Conn) {12 13 var err error14 15 mail :=ws.Config().Location.Query().Get("mail")16 mailto :=ws.Config().Location.Query().Get("mailto")17 18 fmt.Printf("%s, %s\n", mail, mailto)19 20 mailmap[mail]=ws21 22 fmt.Printf("%v\n", ws)23 24 msgconnect :=mail+"connect"25 fmt.Println("server:"+msgconnect)26 27 iferr=websocket.Message.Send(ws, msgconnect); err!=nil {28 fmt.Println("Can't send")29 return30 }31 32 for{33 var replystring34 35 iferr=websocket.Message.Receive(ws,&reply); err!=nil {36 fmt.Println("Can't receive")37 break38 }39 40 fmt.Println("Received back from client:"+reply)41 42 wst, err1 :=mailmap[mailto]43 if!err1 {44 msg :=mailto+"not connect"45 fmt.Println("server:"+msg)46 47 iferr=websocket.Message.Send(ws, msg); err!=nil {48 fmt.Println("Can't send")49 break50 }51 continue52 }53 54 msg :=mail+":"+reply55 fmt.Println("Sending to client:"+msg)56 57 iferr=websocket.Message.Send(wst, msg); err!=nil {58 fmt.Println("Can't send")59 break60 }61 }62 }63 64 //网页客户端65 func Client(w http.ResponseWriter, r*http.Request) {66 html :=`html>67 html>68 69
70 71 golang websocket chatroom72 73 74 75 76WebSocket chat with server
7782 mail:83
84 8586 mailto:Connect to87
88 89 90 9192 Message:Send Message93
94 95 96 97