1
0
mirror of https://github.com/labstack/echo.git synced 2025-02-03 13:11:39 +02:00

Updated recipe for WebSocket

Signed-off-by: Vishal Rana <vr@labstack.com>
This commit is contained in:
Vishal Rana 2015-07-02 22:55:00 -07:00
parent 4686f882d6
commit 10c44a6f8c
7 changed files with 85 additions and 20 deletions

View File

@ -46,7 +46,6 @@ func upload(c *echo.Context) error {
func main() {
e := echo.New()
e.Use(mw.Logger())
e.Use(mw.Recover())

View File

@ -69,7 +69,6 @@ func upload(c *echo.Context) error {
func main() {
e := echo.New()
e.Use(mw.Logger())
e.Use(mw.Recover())

View File

@ -5,16 +5,14 @@
<title>WebSocket</title>
</head>
<body>
<pre>
</pre>
<p id="output"></p>
<script>
var loc = window.location;
var uri;
var uri = 'ws:';
if (loc.protocol === 'https:') {
uri = 'wss:';
} else {
uri = 'ws:';
}
uri += '//' + loc.host;
uri += loc.pathname + 'ws';
@ -26,8 +24,13 @@
}
ws.onmessage = function(evt) {
console.log('Message')
var out = document.getElementById('output');
out.innerHTML += evt.data + '<br>';
}
setInterval(function() {
ws.send('Hello, Server!');
}, 1000);
</script>
</body>
</html>

View File

@ -1,10 +1,9 @@
package main
import (
"io"
"github.com/labstack/echo"
mw "github.com/labstack/echo/middleware"
"golang.org/x/net/websocket"
)
func main() {
@ -14,9 +13,20 @@ func main() {
e.Use(mw.Recover())
e.Static("/", "public")
e.WebSocket("/ws", func(c *echo.Context) error {
io.Copy(c.Socket(), c.Socket())
return nil
e.WebSocket("/ws", func(c *echo.Context) (err error) {
ws := c.Socket()
msg := ""
for {
if err = websocket.Message.Send(ws, "Hello, Client!"); err != nil {
return
}
if err = websocket.Message.Receive(ws, &msg); err != nil {
return
}
println(msg)
}
return
})
e.Run(":1323")

View File

@ -57,7 +57,6 @@ func upload(c *echo.Context) error {
func main() {
e := echo.New()
e.Use(mw.Logger())
e.Use(mw.Recover())

View File

@ -77,7 +77,6 @@ func upload(c *echo.Context) error {
func main() {
e := echo.New()
e.Use(mw.Logger())
e.Use(mw.Recover())

View File

@ -6,22 +6,78 @@
package main
import (
"io"
"github.com/labstack/echo"
mw "github.com/labstack/echo/middleware"
"golang.org/x/net/websocket"
)
func main() {
e := echo.New()
e.Use(mw.Logger())
e.WebSocket("/ws", func(c *echo.Context) error {
io.Copy(c.Socket(), c.Socket())
return nil
e.Use(mw.Recover())
e.Static("/", "public")
e.WebSocket("/ws", func(c *echo.Context) (err error) {
ws := c.Socket()
msg := ""
for {
if err = websocket.Message.Send(ws, "Hello, Client!"); err != nil {
return
}
if err = websocket.Message.Receive(ws, &msg); err != nil {
return
}
println(msg)
}
return
})
e.Run(":1323")
}
```
`index.html`
```html
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>WebSocket</title>
</head>
<body>
<p id="output"></p>
<script>
var loc = window.location;
var uri = 'ws:';
if (loc.protocol === 'https:') {
uri = 'wss:';
}
uri += '//' + loc.host;
uri += loc.pathname + 'ws';
ws = new WebSocket(uri)
ws.onopen = function() {
console.log('Connected')
}
ws.onmessage = function(evt) {
var out = document.getElementById('output');
out.innerHTML += evt.data + '<br>';
}
setInterval(function() {
ws.send('Hello, Server!');
}, 1000);
</script>
</body>
</html>
```
## [Source Code](https://github.com/labstack/echo/blob/master/recipes/websocket)