49 lines
1.0 KiB
Go
49 lines
1.0 KiB
Go
|
package faye
|
||
|
|
||
|
import (
|
||
|
"github.com/thesyncim/faye/message"
|
||
|
"github.com/thesyncim/faye/transport"
|
||
|
)
|
||
|
|
||
|
type options struct {
|
||
|
inExtension message.Extension
|
||
|
outExtension message.Extension
|
||
|
transport transport.Transport
|
||
|
}
|
||
|
|
||
|
var defaultOpts = options{
|
||
|
transport: transport.GetTransport("websocket"),
|
||
|
}
|
||
|
|
||
|
//https://faye.jcoglan.com/architecture.html
|
||
|
type client interface {
|
||
|
Subscribe(subscription string, onMsg func(message *message.Message)) error
|
||
|
Publish(subscription string, message *message.Message) error
|
||
|
//todo unsubscribe,etc
|
||
|
}
|
||
|
|
||
|
type Option func(*options)
|
||
|
|
||
|
var _ client = (*Client)(nil)
|
||
|
|
||
|
type Client struct {
|
||
|
opts options
|
||
|
}
|
||
|
|
||
|
func NewClient(url string, opts ...Option) (*Client, error) {
|
||
|
var c Client
|
||
|
c.opts = defaultOpts
|
||
|
for _, opt := range opts {
|
||
|
opt(&c.opts)
|
||
|
}
|
||
|
return &c, nil
|
||
|
}
|
||
|
|
||
|
func (c *Client) Subscribe(subscription string, onMsg func(message *message.Message)) error {
|
||
|
panic("not implemented")
|
||
|
}
|
||
|
|
||
|
func (c *Client) Publish(subscription string, message *message.Message) error {
|
||
|
panic("not implemented")
|
||
|
}
|