brimstone / peerjs-go

Golang PeerJS implementation

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Golang PeerJS

A Golang port of PeerJS

Implementation

  • Datachannel
  • Mediachannel
  • Test coverage > 80%
  • Signalling server
  • Interoperability tests

Usage example

See _examples folder

	peer1, _ := NewPeer("peer1", NewOptions())
	defer peer1.Close()

	peer2, _ := NewPeer("peer2", NewOptions())
	defer peer2.Close()

	peer2.On("connection", func(data interface{}) {
		conn2 := data.(*DataConnection)
		conn2.On("data", func(data interface{}) {
			// Will print 'hi!'
			log.Printf("Received: %v\n", data)
		})
	})

	conn1, _ := peer1.Connect("peer2", nil)
	conn1.On("open", func(data interface{}) {
		for {
			conn1.Send([]byte("hi!"), false)
			<-time.After(time.Millisecond * 1000)
		}
	})

	select{}

Peer server

A docker image for the GO based peer server is available at opny/peer-server built for Raspberry Pi and PCs

Unsupported features

  • Payload de/encoding based on js-binarypack is not supported.
  • Message chunking (should be already done in recent browser versions)

About

Golang PeerJS implementation

License:Apache License 2.0


Languages

Language:Go 97.0%Language:Makefile 2.0%Language:HTML 0.8%Language:Dockerfile 0.2%