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

隨筆 - 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>
              欧美成人一区二区三区在线观看| 国产精品尤物| 亚洲国产精品一区制服丝袜| 亚洲国产高清在线观看视频| 亚洲一区在线视频| 久久综合婷婷| 久久精品在线视频| 一区二区av在线| 夜夜爽www精品| 在线视频日韩精品| 亚洲在线观看免费| 美女主播一区| 国产精品亚洲激情| aa日韩免费精品视频一| 久久久青草婷婷精品综合日韩| 美女国产一区| 麻豆精品传媒视频| 欧美在线一区二区三区| 免费短视频成人日韩| 国产精品久久久久aaaa樱花| 在线日韩av片| 亚洲一区二区在线看| 亚洲高清一区二| 亚洲精品自在在线观看| 欧美一区二区免费观在线| 亚洲日本黄色| 久久久久久久久久久久久9999| 国产精品白丝黑袜喷水久久久| 91久久精品一区二区别| 牛牛精品成人免费视频| 久久尤物电影视频在线观看| **网站欧美大片在线观看| 免费一级欧美在线大片| 久久久水蜜桃| 一色屋精品亚洲香蕉网站| 久久久www免费人成黑人精品| 亚洲国产美女| 欧美v日韩v国产v| 今天的高清视频免费播放成人| 久久精品一本| 久久久夜夜夜| 亚洲激情在线观看视频免费| 国产精品一区二区欧美| 欧美一区免费视频| 亚洲欧洲日产国产综合网| 欧美激情综合网| 午夜在线视频观看日韩17c| 午夜精品在线视频| 亚洲大胆在线| 亚洲婷婷国产精品电影人久久| 国产精品制服诱惑| 欧美高清在线一区| 国产精品日韩欧美| 欧美大片在线看| 欧美视频久久| 麻豆精品视频在线观看视频| 欧美激情欧美狂野欧美精品| 亚洲欧美精品在线观看| 欧美成人中文字幕| 免费成人黄色片| 欧美日韩精品三区| 久久伊人亚洲| 国产亚洲精品一区二区| 亚洲老司机av| 日韩午夜在线视频| 久久久免费精品视频| 性欧美超级视频| 欧美性大战久久久久| 91久久午夜| 亚洲午夜久久久| 亚洲免费在线精品一区| 在线中文字幕一区| 欧美韩日高清| 亚洲精品视频二区| 亚洲精选一区| 国产精品成人观看视频免费| 在线视频日韩| 你懂的网址国产 欧美| 久久精品视频免费| 性欧美1819sex性高清| 国产综合色产| 欧美国产丝袜视频| 亚洲久久成人| 久久久免费av| 亚洲日本无吗高清不卡| 欧美日韩美女一区二区| 亚洲婷婷免费| 欧美激情中文不卡| 亚洲午夜精品| 亚洲精品免费观看| 激情懂色av一区av二区av| 久久久久久香蕉网| 在线亚洲伦理| 欧美激情一区二区三区| 亚洲一级免费视频| 激情欧美丁香| 亚洲精品一区二区三区蜜桃久| 最新中文字幕一区二区三区| 欧美在线精品免播放器视频| 在线免费观看视频一区| 国产精品国产三级欧美二区| 欧美黄网免费在线观看| 欧美在线播放视频| 一本大道av伊人久久综合| 欧美激情片在线观看| 久久久国际精品| 久久精品国产亚洲5555| 欧美一区日本一区韩国一区| 午夜精彩国产免费不卡不顿大片| 一区二区三区成人精品| 亚洲乱码国产乱码精品精| 亚洲第一页自拍| 亚洲经典在线看| 一本色道久久综合亚洲精品高清| 亚洲区中文字幕| 亚洲激情二区| 日韩一级精品视频在线观看| 亚洲先锋成人| 亚洲国产精品一区二区尤物区| 免费成人小视频| 欧美国产日韩一区二区| 最新中文字幕亚洲| 亚洲午夜激情网站| 欧美中文字幕在线播放| 亚洲国产视频直播| 欧美成人免费全部| 欧美日韩播放| 国产欧美日本在线| 日韩亚洲欧美中文三级| 亚洲一区二区欧美| 久久久xxx| 宅男精品视频| 久久久国产精品一区二区三区| 欧美成年人网| 国产日产精品一区二区三区四区的观看方式 | 最新成人在线| 中文久久精品| 久久综合中文字幕| 亚洲人成人99网站| 欧美制服丝袜第一页| 欧美日韩中文| 一区二区电影免费在线观看| 久久综合久久综合九色| 亚洲欧美一区二区激情| 国产精品久久久久久久久久直播 | 亚洲一线二线三线久久久| 久久精品夜色噜噜亚洲a∨| 91久久黄色| 麻豆成人综合网| 欧美一级久久| 国产精品美女主播| 午夜精品一区二区三区在线视| 亚洲韩国日本中文字幕| 久久精品夜色噜噜亚洲a∨| 精品av久久久久电影| 久久精品99国产精品日本| 性刺激综合网| 亚洲黄网站在线观看| 亚洲欧洲日本一区二区三区| 国产精品r级在线| 午夜精品视频网站| 久久久999精品视频| 亚洲日本在线观看| 一区二区三区久久网| 精品不卡一区| 99国产精品久久久久久久| 国产亚洲精品激情久久| 欧美激情二区三区| 国产精品羞羞答答| 老司机aⅴ在线精品导航| 欧美日韩aaaaa| 亚洲天堂av图片| 久久久久国产精品一区二区| 一本大道久久a久久综合婷婷| av成人免费在线| 国产农村妇女毛片精品久久莱园子 | 欧美一区二区三区免费视频| 一区二区三区我不卡| 亚洲精品社区| 91久久久在线| 久久精品水蜜桃av综合天堂| 午夜影视日本亚洲欧洲精品| 久久影院午夜片一区| 久久精品在线播放| 国产视频在线观看一区 | 亚洲国内在线| 久久视频这里只有精品| 久久婷婷国产综合尤物精品| 国产欧美91| 亚洲调教视频在线观看| 99在线视频精品| 欧美a级大片| 在线欧美福利| 欧美国产日韩精品免费观看| 欧美freesex交免费视频| 亚洲国产精品第一区二区三区| 午夜精品短视频| 久久综合网络一区二区| 亚洲美女视频| 国产精品有限公司|