Giter VIP home page Giter VIP logo

socket-graph's Introduction

socket-graph

リアルタイム通信を利用してブラウザでグラフを表示します。

measuring equipment --(WebSocket)--> deno deploy server --(BroadcastChannel)--> deno deploy server --(Server-Sent-Events)--> browser

https://socket-graph.deno.dev

⚠️実験的なプロジェクトです。使用しないでください。


ディレクトリ構成

  • ./db/: データベース接続用のコード
  • ./listeners/: サーバーの実装
  • ./static/: ブラウザで使用する静的ファイルや、ブラウザとサーバーで共通のコード
  • ./testdata: テストに使うファイル
  • ./dev/: スピード計測や送信テストなどに用いたコード
  • ./github/: GitHub Actionsの設定など
  • ./allow_cors.json: 他サイトから読み込めるようにCORSヘッダーを付けるページのリスト(serve.tsによって制御)
  • ./serve.ts: サーバーのエントリポイント
  • ./serve_test: サーバーのテスト

各ファイルについて

.gitignore

  • ディレクトリ全体をgitで管理しているのだが、その対象から外したいファイルを指定する
  • 例えば.envファイルは個人情報やパスワードが書いてあるので、githubで公開されるのは困る。そのため、gitignoreしておく。

.env

  • 「環境変数」を設定するファイル
  • ここで設定した環境変数は、プログラム上からのみ使うことができる。
  • 例えば、.envファイルの中にPASSWORD="ひみつ"と書いておくと、プログラム上でconst pass = Deno.env.get("PASSWORD")ひみつという値が取得できる
  • 知られたくない情報は全てここに書く(firebaseのアクセストークンなど)
  • 主な環境変数

※環境変数を使う際は

  1. .envファイル(ローカル開発で使う)
  2. deno deployの環境変数(deno deployにログインして設定)
  3. GitHub Actionsの環境変数(GitHubにログインして設定→secret→Actionsで追加)

の3種を必要に応じて設定・追加する。必要に応じて.github/workflow/ci.ymlの中にあるテストコマンドも変更する

LICENSE

  • ライセンスが書いてある。MITライセンスです。

○○_test.ts

  • テスト用のファイル
  • deno test <ファイル名>コマンドでテストを実行できる。全てのテストに合格することが期待される。

サーバーの開発方法

エディタの設定

https://deno.land/manual@main/getting_started/setup_your_environment このへんを参考に、エディタの拡張機能をインストールする必要あり

サーバー立ち上げ

以下のコマンドをターミナルで打つ

deno run --allow-net -
-allow-read=. --allow-env --allow-ffi --unstable --watch ./serve
.ts

(またはdeno task serveコマンドを打つ)

その後、http://localhost:8000/ などにブラウザでアクセスする

その他

deno deployについて

  • このサーバーは https://socket-graph.deno.dev というドメインから世界に公開されている
  • deno deployというサービスを使っている
  • GitHubにpushすると、自動でその変更が反映・公開されるようになっている
    • GitHubについては各自で調べてください
  • deno deployにログインすると環境変数の設定やログの閲覧が行える。

JSDocについて

コード中に/**(コメント)*/という形式のコメントが現れる。これはドキュメントコメントと呼ばれ、エディタや https://doc.deno.land でドキュメントを表示させることができるものである。

※GitHubのファイルのページに行き、rawボタンを押してrawファイルを開く。そのURLをコピーして https://doc.deno.land に入力するとドキュメントが表示される。

開発を引き継ぐ場合のアカウント等の取り扱い

  • Webサイトとして公開する場合
    • GitHubアカウント・deno deployアカウント・Firebaseアカウントの3つが必要です。ない場合は新しく作ってください。
    • https://github.com/ayame113/socket-graph の開発を引き継ぐことになります。
    • 方法1:リポジトリを転送します。deno deployやfirebaseのprojectも転送するので、 https://github.com/ayame113/socket-graph/issues などから@ayame113 に連絡ください。(多分こっちで手続きが必要なので)
    • 方法2:リポジトリをforkします(forkボタンを押す)。deno deployに再登録する必要があります。deno deployに登録して、./serve.tsをエントリポイントとして設定してください。
    • deno deployのプロジェクトも転送する必要があります。
  • Webサイトとして公開しない場合
    • ここのコードをそのままコピーして使ってください。

サーバー側は弄らずに、測定機器の送信だけをやる場合は、上記の手続きは不要です。 https://socket-graph.deno.dev/ の説明を読んでください。

わからないことがあれば https://github.com/ayame113/socket-graph/issues にコメントするか直接聞いてください

socket-graph's People

Contributors

ayame113 avatar github-actions[bot] avatar web-flow avatar

Watchers

 avatar

socket-graph's Issues

roadmap

  • implements server side
    • add server (first path)
    • add router
    • add swc to transpile TypeScript for browser
    • DB access
    • api implement
    • add test
  • implements client side
  • add PWA
  • add document

ci error

#7 (comment)

I'm getting an error in the transaction, so I might try this option:

By default, events are raised each time the transaction update function runs. So if it is run multiple times, you may see intermediate states. You can set this to false to suppress these intermediate states and instead wait until the transaction has completed before events are raised.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.