Article Outline
DenoでSocket通信
TOC
Collection Outline
最新記事
- Next.js 北九州市のイベント情報を取得する
- Next.js × now がやばい
- 競プロ日記 ABC15
- 競プロ日記 ABC159
- Kaggle 住宅価格予測 単回帰分析してみる
- 単回帰分析のFlow
- React Native Styleをいい感じに
- React Movie Search を TS で.
- useRefの使い方がわからん
- Heroku PostgreSQL の使い方
- ラズパイとLEDマトリクスパネルで遊ぶ
- querySelectorAllで取得した要素は配列ではないらしい
- React HookでTodoアプリを作る
- Kaggle 住宅価格予測 重回帰分析してみる
- Kaggle 住宅価格予測 多項式回帰してみる
- Webフロントのすべて
- 新しいMacBook Airが届いた!
- 日向坂46のニュースをスクレイピング
- イコラブのニュースをスクレイピングする!
- 推しのブログをスクレイピング
Denoを使ってSocket通信の実装
Server側 (server.ts)
import { encode } from "https://deno.land/[email protected]/encoding/utf8.ts";
const listener = Deno.listen({
port: 50000,
});
for await (const conn of listener) {
const data = encode("Hello World");
await conn.write(data);
conn.close();
}
Deno.listen
を呼ぶだけでSocketの作成からポートの確保までやってくれます。
ありがたい。。
for-await
でコネクションの数だけ処理を回します。
コネクションが来ればエンコードしたデータをクライアントに送信して、ソケットを閉じます。
Client側 (client.ts)
import { decode } from "https://deno.land/[email protected]/encoding/utf8.ts";
const conn = await Deno.connect({
port: 50000,
});
let buffer = new Uint8Array(1024);
const count = await conn.read(buffer);
if (count) {
console.log(decode(buffer.subarray(0, count)));
}
Deno.connect
でソケットの作成からサーバーへの通信までやってくれます。
read
でサーバーからのデータをバッファーに入れます。
read
はPromiseで 受け取った文字数 l null を返すので条件分岐してあげれば良いです。
実行
$ deno run --allow-net server.ts
$ deno run --allow-net client.ts
まとめ
Denoの標準ライブラリだけでソケット通信の実装ができました。
C言語やPythonに比べて簡単に記述ができます。嬉しい。