web socket update

This commit is contained in:
Tanner Nelson 2016-11-03 14:20:10 -04:00
parent 35f7205829
commit 4e70890a19
No known key found for this signature in database
GPG Key ID: 9C24375C64856B76
1 changed files with 55 additions and 0 deletions

View File

@ -6,6 +6,61 @@ currentMenu: websockets-example
Below are some examples of WebSockets in use.
## Droplet
Creating a WebSocket server with the Droplet is easy. WebSockets work by upgrading an HTTP request to a WebSocket connection.
Because of this, you should pick a URL for your WebSocket server to reside at. In this case, we use `/ws`.
```swift
import Vapor
let drop = Droplet()
drop.socket("ws") { req, ws in
print("New WebSocket connected: \(ws)")
// ping the socket to keep it open
try background {
if ws.state == .open {
try? ws.ping()
drop.console.wait(seconds: 10) // every 10 seconds
}
}
ws.onText = { ws, text in
print("Text received: \(text)")
// reverse the characters and send back
let rev = String(text.characters.reversed())
try ws.send(rev.bytes)
}
ws.onClose = { ws, code, reason, clean in
print("Closed.")
}
}
drop.run()
```
To connect with a WebSocket client, you would open a connection to `ws://<ip>/ws`.
Here is an example using JavaScript.
```js
var ws = new WebSocket("ws://0.0.0.0:8080/ws")
ws.onmessage = function(msg) {
console.log(msg)
}
ws.send('test')
```
The above will log `tset` (`test` reversed).
## Client
```Swift