青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 224  文章 - 41  trackbacks - 0
<2010年7月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

享受編程

常用鏈接

留言簿(11)

隨筆分類(159)

隨筆檔案(224)

文章分類(2)

文章檔案(4)

經典c++博客

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

這個程序簡單,使用google go語言 golang和html5的websocket建立一個簡單的web聊天程序。

程序如下:
  1 package main
  2 
  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 error
 14 
 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] = ws
 21 
 22     fmt.Printf("%v\n", ws)
 23 
 24     msgconnect := mail + " connect  "
 25     fmt.Println("server: " + msgconnect)
 26 
 27     if err = websocket.Message.Send(ws, msgconnect); err != nil {
 28         fmt.Println("Can't send")
 29         return
 30     }
 31 
 32     for {
 33         var reply string
 34 
 35         if err = websocket.Message.Receive(ws, &reply); err != nil {
 36             fmt.Println("Can't receive")
 37             break
 38         }
 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             if err = websocket.Message.Send(ws, msg); err != nil {
 48                 fmt.Println("Can't send")
 49                 break
 50             }
 51             continue
 52         }
 53 
 54         msg := mail + ":" + reply
 55         fmt.Println("Sending to client: " + msg)
 56 
 57         if err = websocket.Message.Send(wst, msg); err != nil {
 58             fmt.Println("Can't send")
 59             break
 60         }
 61     }
 62 }
 63 
 64 // 網頁客戶端
 65 func Client(w http.ResponseWriter, r *http.Request) {
 66     html := `<!doctype html>
 67 <!doctype html>
 68 <html>
 69 <head>
 70     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 71     <title>golang websocket chatroom</title>
 72     <script src="http://img3.douban.com/js/packed_jquery.min6301986802.js"></script>
 73     
 74 </head>
 75 <body>
 76     <h1>WebSocket chat with server </h1>
 77     <div id="log" style="height: 300px;overflow-y: scroll;border: 1px solid #CCC;">
 78     </div>
 79     <div>
 80         
 81             <p>
 82                 mail: <input id="mail" type="text" value="automate@qq.com">
 83             </p>
 84 
 85             <p>
 86                 mailto: <input id="mailto" type="text" value="program@qq.com"><button onclick="connectto();">Connect to</button>
 87             </p>
 88 
 89             
 90 
 91             <p>
 92                 Message: <input id="msg" type="text" value="Hello, world!"><button onclick="sendto();">Send Message</button>
 93             </p>
 94 
 95 
 96          
 97     </div>
 98     
 99 </body>
100 
101 
102 <script>
103         
104 
105         
106 
107         function connectto() {
108             var mail = document.getElementById('mail').value;
109             console.log(mail);
110 
111             var mailto = document.getElementById('mailto').value;
112             console.log(mailto);
113 
114             var url = "ws://127.0.0.1:8001/chatroom?mailto=" + mailto + "&mail=" + mail;
115 
116             ws = new WebSocket(url);
117 
118             ws.onopen = function(e){
119             console.log("onopen");
120             console.dir(e);
121             };
122 
123             ws.onmessage = function(e){
124                 console.log("onmessage");
125                 console.dir(e);
126                 $('#log').append('<p>'+e.data+'<p>');
127                 $('#log').get(0).scrollTop = $('#log').get(0).scrollHeight;
128             };
129 
130             ws.onclose = function(e){
131                 console.log("onclose");
132                 console.dir(e);
133             };
134 
135             ws.onerror = function(e){
136                 console.log("onerror");
137                 console.dir(e);
138             };
139 
140 
141          };
142 
143         function sendto() {
144             var mail = document.getElementById('mail').value;
145             var msg = document.getElementById('msg').value;
146             $('#log').append('<p style="color:red;">' + mail + ' : '+msg+'<p>');
147             $('#log').get(0).scrollTop = $('#log').get(0).scrollHeight;
148 
149             ws.send(msg);
150          };
151 
152     </script>
153 </html>
154 `
155     io.WriteString(w, html)
156 }
157 
158 var mailmap = make(map[string]*websocket.Conn, 10)
159 
160 func main() {
161 
162     fmt.Println("listen on port 8001")
163     fmt.Println("visit http://127.0.0.1:8001/chat with web browser(recommend: chrome)")
164 
165     http.Handle("/", websocket.Handler(Echo))
166     http.HandleFunc("/chat", Client)
167     err := http.ListenAndServe(":8001", nil)
168 
169     if err != nil {
170         panic("ListenAndServe: " + err.Error())
171     }
172 }
173 

運行http://127.0.0.1:8001/chat
在兩個不同的瀏覽器下 互給用戶名,連接后就可以開始聊天

如下圖:



posted on 2012-12-20 15:32 漂漂 閱讀(4405) 評論(1)  編輯 收藏 引用

FeedBack:
# re: 在google go語言 golang中,html5,使用websocket,建立一個最簡單的高并發web聊天室 2012-12-20 15:36 sdfdsaf
sfdsfsdafds  回復  更多評論
  

只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              久久精品最新地址| 免费在线亚洲| 久久精品天堂| 国产日韩精品一区二区三区在线| 欧美一区二区私人影院日本| 欧美岛国激情| 久久超碰97人人做人人爱| aa亚洲婷婷| 亚洲精品美女在线| 亚洲成人资源网| 国产精品日韩专区| 欧美日韩中文字幕综合视频| 免费一级欧美片在线观看| 欧美一级网站| 久久精品免费观看| 亚洲欧美国产三级| 亚洲永久免费av| 销魂美女一区二区三区视频在线| 夜夜嗨av一区二区三区免费区| 欧美+亚洲+精品+三区| 老妇喷水一区二区三区| 久久香蕉国产线看观看网| 亚洲免费一在线| 亚洲女同精品视频| 欧美在线观看网站| 久久免费视频网| 欧美福利影院| 亚洲美女区一区| 亚洲综合色视频| 久久嫩草精品久久久精品一| 美女日韩欧美| 国产精品久久国产愉拍| 国产伦一区二区三区色一情| 极品尤物av久久免费看| 日韩网站在线看片你懂的| 亚洲天堂男人| 乱码第一页成人| 日韩亚洲欧美在线观看| 性感少妇一区| 欧美欧美天天天天操| 国产午夜精品视频| 欧美极品一区| 国产色综合网| 一区二区三区四区五区精品| 欧美一区激情| 亚洲日本成人在线观看| 亚洲欧美日韩精品久久久久| 久久久噜噜噜| 国产性猛交xxxx免费看久久| 99精品久久久| 亚洲高清在线观看| 午夜亚洲一区| 国产精品99一区| 99视频精品免费观看| 欧美电影电视剧在线观看| 午夜精品在线| 国产精品第十页| 在线视频欧美日韩精品| 亚洲国产一区二区三区高清| 久久综合久久久| 国产一区二区三区在线播放免费观看 | 欧美在线观看一二区| 欧美中文字幕在线观看| 亚洲无玛一区| 久久综合给合久久狠狠色| 亚洲电影免费| 久久综合中文| 六月丁香综合| 亚洲精品在线观看免费| 亚洲精品少妇30p| 欧美日韩一本到| 亚洲欧美日韩国产综合在线 | 欧美国产欧美综合| 亚洲一区二区伦理| 亚洲欧美中文日韩在线| 最近中文字幕日韩精品| 亚洲香蕉伊综合在人在线视看| 伊人精品视频| 一区二区三区波多野结衣在线观看| 久久国产精彩视频| 在线视频一区观看| 欧美成年人视频网站| 性亚洲最疯狂xxxx高清| 欧美激情网站在线观看| 久久夜色精品国产欧美乱极品 | 欧美伊人久久久久久久久影院 | 亚洲女与黑人做爰| 一本色道久久88综合亚洲精品ⅰ| 欧美在线网址| 国产欧美亚洲精品| 亚洲另类视频| 在线中文字幕不卡| 欧美日本国产一区| 蜜月aⅴ免费一区二区三区| 国产午夜精品一区理论片飘花| 亚洲午夜成aⅴ人片| 日韩视频永久免费观看| 裸体丰满少妇做受久久99精品| 久久婷婷国产综合国色天香| 国产精品视频福利| 中国av一区| 久久久999| 国产一区再线| 99精品国产99久久久久久福利| 夜夜躁日日躁狠狠久久88av| 欧美国产日本高清在线| 91久久精品国产91性色tv| 亚洲人成网站在线播| 欧美人牲a欧美精品| 亚洲精品久久久久久下一站 | 久久精品免费| 激情久久五月| 欧美片第1页综合| 国产精品99久久久久久白浆小说| 亚洲一区二区av电影| 国产日韩欧美三级| 欧美精品国产精品日韩精品| 亚洲图色在线| 久久综合久久综合这里只有精品| 1024成人网色www| 欧美三级不卡| 久久综合一区二区三区| 亚洲激情av在线| 国产精品美女视频网站| 久久只精品国产| 亚洲欧美一区二区精品久久久| 久久久久看片| 亚洲香蕉在线观看| 亚洲福利免费| 国产精品久久久久aaaa九色| 久久久青草青青国产亚洲免观| 亚洲精品社区| 亚洲激情一区二区三区| 久久黄色小说| 午夜日韩激情| 亚洲一区二区综合| 99精品国产99久久久久久福利| 国产日韩综合一区二区性色av| 欧美日韩91| 欧美另类视频| 欧美成人精品高清在线播放| 欧美伊人精品成人久久综合97| 亚洲一级网站| 香蕉国产精品偷在线观看不卡| 99精品久久久| 一区二区欧美视频| 亚洲视频日本| 亚洲免费中文| 性欧美超级视频| 欧美一区二区三区免费视| 亚洲欧美日韩精品久久奇米色影视 | 国产欧美日韩在线播放| 国产精品久久久久久久app | 国产精品久久网| 国产精品毛片在线| 国产精品久久久久久妇女6080| 国产麻豆精品久久一二三| 国产伦精品一区二区三区免费迷| 国产精品视频第一区| 狠狠操狠狠色综合网| 在线欧美一区| 亚洲午夜91| 久久亚洲春色中文字幕| 亚洲国产精品久久| 99视频超级精品| 久久se精品一区二区| 欧美激情精品久久久久久久变态 | 欧美阿v一级看视频| 亚洲国产精品一区二区www| 亚洲精选视频免费看| 午夜一级久久| 欧美片网站免费| 国内成人精品2018免费看| 99国内精品| 裸体一区二区三区| 日韩午夜免费视频| 久久久久久成人| 国产精品都在这里| 亚洲国产精品v| 久久久久九九九| 亚洲香蕉伊综合在人在线视看| 美女露胸一区二区三区| 国产欧美精品国产国产专区| 在线观看视频免费一区二区三区| 亚洲一区二区三区在线播放| 蜜臀久久久99精品久久久久久| 欧美一二区视频| 欧美日韩国产成人高清视频| 亚洲丰满在线| 欧美高清在线观看| 欧美中文字幕在线观看| 国产麻豆9l精品三级站| 亚洲影视综合| 亚洲午夜激情免费视频| 欧美日韩一区国产| 亚洲午夜一区二区三区| 日韩一区二区免费高清| 欧美日韩免费| 亚洲一区二区三区乱码aⅴ| 99re热这里只有精品视频|