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

隨筆 - 224  文章 - 41  trackbacks - 0
<2010年8月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
2930311234

享受編程

常用鏈接

留言簿(11)

隨筆分類(159)

隨筆檔案(224)

文章分類(2)

文章檔案(4)

經(jīng)典c++博客

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

這個(gè)程序簡單,使用google go語言 golang和html5的websocket建立一個(gè)簡單的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 // 網(wǎng)頁客戶端
 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 

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

如下圖:



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

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

只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   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>
              亚洲欧美视频在线观看视频| 久久亚洲精品一区| 午夜精品久久久久久久男人的天堂 | 伊人久久婷婷色综合98网| 亚洲免费在线播放| 性xx色xx综合久久久xx| 国产午夜亚洲精品理论片色戒| 久久精品国产在热久久| 麻豆精品网站| 亚洲欧美色婷婷| 久久久国产视频91| 亚洲国产精品视频| 亚洲一区二区三区精品在线| 国精产品99永久一区一区| 亚洲精品123区| 欧美日韩在线影院| 久久亚洲综合色一区二区三区| 欧美精选在线| 久久一区二区三区av| 欧美午夜剧场| 亚洲精品社区| 亚洲黑丝在线| 蜜臀av国产精品久久久久| 亚洲一区二区在线播放| 亚洲性色视频| 欧美日韩久久不卡| 亚洲成色www8888| 99国产欧美久久久精品| 精品动漫3d一区二区三区| 亚洲视频每日更新| 999亚洲国产精| 欧美激情一区二区| 免费观看一区| 在线观看日韩av电影| 欧美一区二区三区视频| 午夜精品久久99蜜桃的功能介绍| 欧美日韩亚洲综合在线| 亚洲裸体俱乐部裸体舞表演av| 亚洲精品国偷自产在线99热| 免费av成人在线| 欧美高清在线观看| 91久久久国产精品| 欧美成人影音| 中文在线资源观看网站视频免费不卡 | 国产一二三精品| 久久这里有精品15一区二区三区| 久久一区二区三区av| 最新日韩在线视频| 欧美日韩在线看| 亚洲免费网站| 欧美激情亚洲视频| 亚洲欧美日韩国产| 尤物视频一区二区| 欧美日韩在线亚洲一区蜜芽 | 国内精品视频在线播放| 欧美1级日本1级| 西西人体一区二区| 亚洲第一在线综合网站| 欧美中文在线观看| 六月天综合网| 一本色道久久综合亚洲精品婷婷 | 99re这里只有精品6| 国产精品区一区二区三| 欧美激情小视频| 久久国产直播| 久久偷窥视频| 国产精品久久久久9999高清| 欧美韩日一区二区| 激情91久久| 久久综合给合| 免费欧美日韩| 亚洲电影观看| 国产亚洲激情在线| 国产一区二区黄色| 国产一区二区久久| 韩国久久久久| 在线欧美一区| 亚洲伦理一区| 国产一区二区三区久久久| 午夜久久一区| 免费在线观看精品| 亚洲精品无人区| 欧美调教vk| 欧美一区午夜精品| 欧美精品aa| 亚洲欧美欧美一区二区三区| 久久精品一区二区| 亚洲精品永久免费| 国产亚洲精品久久久久动| 久久国内精品视频| 日韩亚洲一区二区| 免费观看国产成人| 一本色道久久综合亚洲精品高清 | 欧美三区在线| 性欧美办公室18xxxxhd| 欧美激情第3页| 欧美主播一区二区三区美女 久久精品人 | 一区二区三区导航| 韩日精品在线| 欧美三级小说| 欧美国产精品久久| 欧美专区第一页| 亚洲一线二线三线久久久| 老巨人导航500精品| 欧美亚州一区二区三区| 亚洲高清资源| 久久精品国产免费看久久精品| 亚洲第一在线综合网站| 亚洲精品欧美日韩专区| 欧美电影专区| 欧美激情视频给我| 麻豆av福利av久久av| 久久久久久久久久久久久9999| 亚洲视频在线二区| 亚洲精品一区二| av成人手机在线| 99re6这里只有精品| 一区二区三区www| 亚洲一区二区黄色| 亚洲欧美制服中文字幕| 亚洲综合日韩| 久久午夜精品一区二区| 久久看片网站| 亚洲国产成人久久综合一区| 欧美1区2区| 亚洲欧美卡通另类91av| 性做久久久久久久免费看| 香蕉久久夜色精品| 亚洲欧美三级伦理| 免费观看成人| 一区二区三区黄色| 久久成人国产| 国产精品国产亚洲精品看不卡15| 国产亚洲综合精品| 亚洲狼人精品一区二区三区| 亚洲欧美中日韩| 亚洲免费高清| 欧美成人午夜激情在线| 国产精品嫩草久久久久| 日韩视频第一页| 欧美福利视频| 国产日韩欧美在线| 中文av一区特黄| 亚洲激情在线观看| 羞羞色国产精品| 亚洲视频第一页| 麻豆国产精品一区二区三区| 欧美中在线观看| 国产精品网红福利| 99视频一区| 一本综合久久| 免费在线亚洲| 亚洲国产成人久久综合一区| 黑人一区二区| 欧美一区二区日韩| 欧美在线看片| 国产目拍亚洲精品99久久精品| 亚洲欧洲一区二区天堂久久| 在线观看中文字幕不卡| 欧美一激情一区二区三区| 欧美一区二区三区另类| 国产精品视频| 久久大综合网| 亚洲国产天堂久久综合网| 日韩一区二区精品葵司在线| 欧美大片一区二区| av成人免费在线| 久久激情一区| 亚洲电影免费观看高清完整版| 老司机午夜精品视频| 亚洲国产精品黑人久久久 | 国产欧美日韩精品a在线观看| 亚洲免费精彩视频| 中文在线资源观看网站视频免费不卡| 欧美精品久久久久久久免费观看 | 免费观看久久久4p| 亚洲国产日韩欧美综合久久 | 久久午夜羞羞影院免费观看| 欧美黑人在线观看| 中文一区二区| 永久久久久久| 国产精品国内视频| 另类人畜视频在线| 一二三区精品福利视频| 久久野战av| 午夜精品亚洲| 亚洲午夜高清视频| 亚洲大片免费看| 国产一区二区中文字幕免费看| 欧美国产在线观看| 久久婷婷av| 久久精品30| 欧美在线播放高清精品| 制服丝袜激情欧洲亚洲| 亚洲精品视频免费观看| 欧美成人午夜免费视在线看片 | 午夜精品一区二区三区在线播放 | 亚洲人成啪啪网站| 免费在线观看成人av| 你懂的国产精品永久在线|