ws

package
v1.4.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 24, 2022 License: MIT Imports: 6 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Client

type Client struct {
	// contains filtered or unexported fields
}

Client はWebSocketのクライアントを表します。

func NewClient

func NewClient(sessionID string, ws *websocket.Conn, notifyClosedCh chan<- *Client) *Client

NewClient は Clientのポインタを生成します。

func (*Client) PushLoop

func (c *Client) PushLoop()

PushLoop は一つのWebSocketコネクションに対してメッセージを送信するループです。 一つのWebSocketコネクションに対して一つのgoroutineでPushLoop()が実行されます。 接続が切れた場合はnotifyClosedChを通じてHubに登録されているwsConnを削除してメモリリークを防ぎます。

func (*Client) ReadLoop

func (c *Client) ReadLoop()

ReadLoop はクライアントからのメッセージを受け取るループです。 今回はサーバからイベントを送信するのみですが、Pingのやりとりに必要なのでループを回してます。

type Hub

type Hub struct {
	// contains filtered or unexported fields
}

Hub は すべてのWebSocketクライアント一元管理する構造体です。 プロセス内に実体は一つしか存在しません。

func NewHub

func NewHub() *Hub

NewHub はHubのポインタを生成します。

func (*Hub) Push

func (h *Hub) Push(pushMsg *event.PushMessage)

Push はpushMsgをチャネルに流して、接続されているクライアントに送信します。 event.Pusher インターフェースを満たしています。

func (*Hub) Register

func (h *Hub) Register(client *Client)

Register は新しいWebSocketのクライアントをHubに登録します。 スレッドセーフになるようにチャネルを通じて登録されます。 実際の作業は Run() で行われます。

func (*Hub) Run

func (h *Hub) Run()

Run はWebSocketのメッセージを送信するメインループを実行する関数です。

func (*Hub) Unregister

func (h *Hub) Unregister(client *Client)

Unregister はWebSocketのクライアントをHubから登録解除します。 スレッドセーフになるようにチャネルを通じて登録解除されます。 実際の作業は Run() で行われます。

func (*Hub) UnregisterCh

func (h *Hub) UnregisterCh() chan<- *Client

UnregisterCh は送信専用のクライアント登録解除のチャネルを返します。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL