Skip to content

Commit

Permalink
New and connect to webrtc server done
Browse files Browse the repository at this point in the history
  • Loading branch information
kirill-scherba committed Mar 28, 2024
1 parent cee9b13 commit b370a66
Showing 1 changed file with 47 additions and 10 deletions.
57 changes: 47 additions & 10 deletions tru/client/client_wasm.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
package client

import (
"fmt"
"net"
"sync"
"syscall/js"
Expand All @@ -20,7 +21,7 @@ type Tru struct {
uuid string
}

// TODO:
// New creates new Tru instance.
func New(port int, params ...interface{}) (t *Tru, err error) {

t = new(Tru)
Expand All @@ -34,26 +35,51 @@ func New(port int, params ...interface{}) (t *Tru, err error) {

// Add reader
for _, p := range params {
if _, ok := p.(func(ch *Channel, pac *Packet, err error) bool); ok {
t.teoweb.Call("addReader", js.FuncOf(func(this js.Value, args []js.Value) any {
// TODO: args[1] is js.Value with []byte
// r(&Channel{}, &Packet{data: args[1]}, nil)
return nil
}))
if r, ok := p.(func(ch *Channel, pac *Packet, err error) bool); ok {
fmt.Println("add reader")
t.teoweb.Call("addReader", js.FuncOf(
func(this js.Value, args []js.Value) any {
fmt.Println("got in reader", args[0].Get("command").String())
switch args[0].Get("command").String() {
case "clients":
t.global.Call("setIdText", "clients", args[1])
case "data":
r(&Channel{t: t}, &Packet{data: []byte(args[1].String())}, nil)
}
return nil
}))
break
}
}

// On connect
t.teoweb.Call("onOpen", js.FuncOf(func(this js.Value, args []js.Value) any {
fmt.Println("onOpen")
t.global.Call("setIdText", "online", true)
t.teoweb.Call("sendCmd", "clients")
t.teoweb.Call("subscribeCmd", "clients")
return nil
}))

// On disconnect
t.teoweb.Call("onClose", js.FuncOf(func(this js.Value, args []js.Value) any {
fmt.Println("onClose")
t.global.Call("setIdText", "online", false)
return nil
}))

return t, nil
}

// TODO:
func (t *Tru) Connect(addr string, reader ...ReaderFunc) (ch *Channel, err error) {

fmt.Println("Connect", addr)

// Connect to Teonet WebRTC server
const url = "wss://signal.teonet.dev/signal"
const server = "server-1"
t.teoweb.Call("connect", url, t.uuid, server)
const peer = "server-1"
t.teoweb.Call("connect", url, t.uuid, peer)

if len(reader) > 0 {
t.teoweb.Call("addReader", js.FuncOf(func(this js.Value, args []js.Value) any {
Expand All @@ -63,7 +89,14 @@ func (t *Tru) Connect(addr string, reader ...ReaderFunc) (ch *Channel, err error
}))
}

return nil, nil
// Wait connected
time.Sleep(time.Second)

// TODO: Add connected channel to channels map

ch = &Channel{t: t, peer: peer}

return
}

// TODO:
Expand All @@ -76,6 +109,8 @@ func (t *Tru) ErrChannelDestroyed(err error) bool {
}

type Channel struct {
t *Tru // Pointer to Tru
peer string // Peer name
}

// TODO:
Expand All @@ -85,6 +120,8 @@ func (c *Channel) Addr() (addr net.Addr) {

// TODO:
func (c *Channel) WriteTo(data []byte) (int, error) {
fmt.Println("WriteTo", data)
c.t.teoweb.Call("sendCmd", "data", string(data))
return 0, nil
}

Expand Down

0 comments on commit b370a66

Please sign in to comment.