Skip to content

Commit

Permalink
rough out connect
Browse files Browse the repository at this point in the history
  • Loading branch information
stesla committed Apr 26, 2012
1 parent bfd653a commit 51e45b0
Show file tree
Hide file tree
Showing 4 changed files with 70 additions and 4 deletions.
39 changes: 39 additions & 0 deletions connect.go
@@ -0,0 +1,39 @@
package main

import (
"code.google.com/p/go.net/websocket"
"github.com/stesla/gotelnet"
"io"
"net/http"
)

func ConnectServer(w http.ResponseWriter, r *http.Request) {
// TODO: do some sort of argument parsing here
conn, err := gotelnet.Dial("localhost:2860")
if err != nil {
w.WriteHeader(500);
return
}
websocket.Handler(func(ws *websocket.Conn) {
forward(ws, conn);
}).ServeHTTP(w, r)
}

func forward(down *websocket.Conn, up gotelnet.Conn) {
lineEnding := "\n";
exit := make(chan bool)
go func() { io.Copy(down, up); exit <- true }()
go func() {
for {
var msg string
if rerr := websocket.Message.Receive(down, &msg); rerr != nil {
break
}
if _, werr := up.Write([]byte(msg + lineEnding)); werr != nil {
break
}
}
exit <- true
}()
<-exit
}
1 change: 1 addition & 0 deletions data/www/css/muon.css
Expand Up @@ -18,6 +18,7 @@ body {


#container .output { #container .output {
padding: 5px; padding: 5px;
white-space: pre;
} }


#container .output p { #container .output p {
Expand Down
33 changes: 29 additions & 4 deletions data/www/js/muon.js
@@ -1,14 +1,39 @@
(function() { (function() {
var input_, output_, ws_;

function connect(fn) {
//TODO: wss when we're https
var ws = new WebSocket("ws://" + window.location.host + "/connect");
ws.onopen = function() {
fn("Connected!");
}
ws.onclose = function() {
fn("Disconnected!");
}
ws.onmessage = function(msg) {
fn(msg.data);
}
return ws;
}

function processInput(evt) { function processInput(evt) {
if (this.value && evt.keyCode == 13) { if (this.value && evt.keyCode == 13) {
evt.preventDefault(); evt.preventDefault();
console.log("input:", this.value); ws_.send(this.value);
this.value = ""; console.log("sent:", this.value);
this.value = "";
} }
} }


window.onload = function() { window.onload = function() {
var input = document.querySelector('#container .input textarea'); input_ = document.querySelector('#container .input textarea');
input.addEventListener('keydown', processInput); output_ = document.querySelector('#container .output');
input_.addEventListener('keydown', processInput);
ws_ = connect(function(text) {
var line = document.createElement('p');
line.innerHTML = text;
output_.appendChild(line);
input_.scrollIntoView();
});
}; };
})(); })();
1 change: 1 addition & 0 deletions main.go
Expand Up @@ -31,5 +31,6 @@ func main() {
http.Handle("/css/", static) http.Handle("/css/", static)
http.Handle("/images/", static) http.Handle("/images/", static)
http.Handle("/js/", static) http.Handle("/js/", static)
http.HandleFunc("/connect", ConnectServer)
log.Fatal(http.ListenAndServe(*listenAddr, nil)) log.Fatal(http.ListenAndServe(*listenAddr, nil))
} }

0 comments on commit 51e45b0

Please sign in to comment.