ウェブフロント
- angular
- corewebvitals
- editorconfig
- gatsby
- hls
- html
- javascript
querySelectorAllで取得した要素は配列ではないらしい
JavaScript 配列内のオブジェクトの更新ってどうする?
デバッグ関数とかnullチェック関数をutil/index.tsにおいとけば楽なことに今頃気づいた。
ブラウザからジャイロセンサーを使ってみる
JS 画像のアップロード、プレビュー機能を実装
「数値から各桁の値を取り出す処理」って言われたら数学的な処理が一番に思い浮かぶけど、JSならそんなことなかった。
Callback時代の関数をPromise化する
個人的実装されてほしいECMA Script Proposal
JavaScriptのprototypeを使う
音声をなみなみさせる
AudioWorkletとAudioWorkletProcessorを使って音声のビジュアライゼーション
- next
- nuxt
- playwright
- prettier
- react
- reactnative
- tensorflowjs
- tools
- typescript
- wasm
- websocket
- ポエム
- 開発環境
サーバー
その他
DenoでSocket通信
Denoを使ってSocket通信の実装
Server側 (server.ts)
import { encode } from "https://deno.land/std@0.82.0/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/std@0.82.0/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に比べて簡単に記述ができます。嬉しい。
Thanks you for reading.