"最近需要做一个消息通知的推送,开始在实践 websocket server port:9091 package main import ( 'fmt' 'log' 'net/http' 'github.com/gorilla/websocket' ) var upgrader = websocket.Upgrader{ .."

websocket 初尝试之 echo demo

最近需要做一个消息通知的推送,开始在实践 websocket

server port:9091

package main  
import (  
 "fmt"  
 "log"
 "net/http"
 "github.com/gorilla/websocket"
)  
  
var upgrader = websocket.Upgrader{  
 CheckOrigin: func(r *http.Request) bool {  
  return true  
  },  
} // use default options  
  
func Echo(w http.ResponseWriter, r *http.Request) {  
 c, err := upgrader.Upgrade(w, r, nil)  
  if err != nil {  
  log.Print("upgrade:", err)  
  return  
  }  
  defer c.Close()  
  for {  
 mt, message, err := c.ReadMessage()  
  if err != nil {  
  log.Println("read:", err)  
  break  
  }  
  log.Printf("recv: %s", message)  
 err = c.WriteMessage(mt, message)  
  if err != nil {  
  log.Println("write:", err)  
  break  
  }  
 }}  
func main() {  
  http.HandleFunc("/echo", Echo)  
  fmt.Println("start server  port:9091")  
  if err := http.ListenAndServe(":9091", nil); err != nil {  
  log.Fatal("ListenAndServe🔢", err)  
 }}

client:

<!DOCTYPE html>

<html>

<head>
	<title>websocket</title>
</head>
<body>
	<h1>Echo Test</h1>
	<input type="text" id="sendTxt">
	<button id="sendBtn">发送</button>
	<div id="recv"></div>


	<script type="text/javascript">
		let ws = new WebSocket("ws://127.0.0.1:9091/echo")
		ws.onopen = function () {
			// body...
			console.log("websocket open");
			document.getElementById('recv').innerHTML = 'Connected';
		}
		ws.oncolse = function (e) {
			// body...
			console.log("consoled");}

		ws.onmessage=function (e) {
			// body...
			console.log(e.data)
			document.getElementById('recv').innerHTML = e.data;}
		document.getElementById('sendBtn').onclick=function(){
			var txt=document.getElementById('sendTxt').value;
			console.log(txt)
			ws.send(txt)
		}

	</script>
</body>
</html>

  • B3log

    B3log 是一个开源组织,名字来源于“Bulletin Board Blog”缩写,目标是将独立博客与论坛结合,形成一种新的网络社区体验,详细请看 B3log 构思。目前 B3log 已经开源了多款产品:PipeSoloSymWide 等,欢迎大家加入,贡献开源。

    2609 引用 • 4210 回帖 • 632 关注
  • WebSocket

    WebSocket 是 HTML5 中定义的一种新协议,它实现了浏览器与服务器之间的全双工通信(full-duplex)。

    32 引用 • 104 回帖 • 737 关注
  • 网络
    53 引用 • 114 回帖
  • golang

    Go 语言是 Google 推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发 Go,是因为过去 10 多年间软件开发的难度令人沮丧。Go 是谷歌 2009 发布的第二款编程语言。

    242 引用 • 1005 回帖 • 784 关注
感谢    关注    收藏    赞同    反对    举报    分享
回帖    
请输入回帖内容...