<commit_before>gopham
======

Push message Manager

It is like Google Cloud Messaging.

How to Run
----------
```
go get
go run gopham.go
```

Open [localhost:3000](http://localhost:3000/) on your browser.

Usage
-----

### WS /subscribe
WebSocket endpoint `/subscribe`.

### SSE /sse
Server-Sent Events endpoint `/sse`.

### POST /
Request body (JSON)

```
{
  "channel": "test",
  "ttl": 0,
  "data": {"message": "json"}
}
```

#### channel [required]
チャンネル識別用文字列

現状、明示的に channel を指定しなくても全てのクライアントに broadcast されます。

#### ttl [option]
⚠まだ実装されていません。

* `ttl = 0` の時は揮発性メッセージ
* `ttl > 0` の時は `ttl` の大きさだけキューに留まります

例えば、 `ttl = 1` のメッセージは message list の末尾に追加され、末尾から数えて2以上深くなった場合に削除されます。
重要度が高く消えては困るメッセージの ttl は大きく設定します。

message list はクライアントが接続時に受け取ります。

#### data [required]
任意の JSON 形式

### Example
#### Subscribe (Server-Sent Events endpoint)
```
curl 'http://localhost:3000/sse' --verbose
```

#### Post message
```
curl 'http://localhost:3000/' --verbose --request POST --header 'Content-Type: application/json' \
--data-binary '{"channel":"test", "data":{"message":"json"}}'
```
<commit_msg>fix..<commit_after>gopham
======

Push message Manager

It is like Google Cloud Messaging.

How to Run
----------
```
go get
go run gopham.go
```

Open [localhost:3000/static](http://localhost:3000/static/) on your browser.

Usage
-----

### WS /subscribe
WebSocket endpoint `/subscribe`.

### SSE /sse
Server-Sent Events endpoint `/sse`.

### POST /
Request body (JSON)

```
{
  "channel": "test",
  "ttl": 0,
  "data": {"message": "json"}
}
```

#### channel [required]
チャンネル識別用文字列

現状、明示的に channel を指定しなくても全てのクライアントに broadcast されます。

#### ttl [option]
⚠まだ実装されていません。

* `ttl = 0` の時は揮発性メッセージ
* `ttl > 0` の時は `ttl` の大きさだけキューに留まります

例えば、 `ttl = 1` のメッセージは message list の末尾に追加され、末尾から数えて2以上深くなった場合に削除されます。
重要度が高く消えては困るメッセージの ttl は大きく設定します。

message list はクライアントが接続時に受け取ります。

#### data [required]
任意の JSON 形式

### Example
#### Subscribe (Server-Sent Events endpoint)
```
curl 'http://localhost:3000/sse' --verbose
```

#### Post message
```
curl 'http://localhost:3000/' --verbose --request POST --header 'Content-Type: application/json' \
--data-binary '{"channel":"test", "data":{"message":"json"}}'
```

{'fraction_non_alphanumeric': 0.19363636363636363, 'fraction_numerical': 0.019090909090909092, 'mean_word_length': 4.252983293556086, 'pattern_counts': {'":': 14, '<': 3, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1906419', 'n_tokens_mistral': 1080, 'n_tokens_neox': 999, 'n_words': 208}