問題タブ [yaws]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
erlang - YawsとWebSocketを使用してデータをサブスクライブする
いくつかのハードウェアセンサーと通信するgen_serverがあります。この設定は正常に機能します。次に、データをリアルタイムで視覚化してこのシステムを拡張したいと思います。そして、このデータをWebSocketを介してWebクライアントに配信したいと思います。
複数の「リスナー」がいる可能性があるため、たとえば、さまざまなWebブラウザーでこのデータを視覚化する複数の人々がいるため、オブザーバーパターンに似たものを考えています。Webクライアントがセンサーのサブスクライブを要求するたびに、そのセンサーの利害関係者のリストに追加する必要があります。新しいセンサーデータが到着したらすぐに、遅滞なくクライアントにプッシュする必要があります。
私はyawsを使用してWebSocket機能をすばやく取得しています。私の問題は、フランベジアが機能しているように見える方法に関連しています。サーバー側では、接続時にA#arg.clisock値(eg #Port<0.2825>)を介してクライアントを「見る」だけです。以下のコードでws_serverは、クライアントから新しいデータが入力されたときにコールバックを受信するように登録しています。この時点以降、yawsはサーバー側に入るメッセージにのみ応答できるようになります。
コールバックモジュールは次のようになります。
どこにもsubscribe <sensor>、(接続時間の後に)この利害関係者をオブザーバーのリストに動的に追加するなどのメッセージに反応することはできないようです。
yawsサーバーを使用して、クライアントへのデータの非同期プッシュを実行し、セッション中にリッスンするセンサーを追加および削除するにはどうすればよいですか。基本的に最も簡単な方法は、yawsがhandle_message/2最初の引数を。としてコールバックできる場合Fromです。それ以外の場合は、参照を追加して両側に参照を保持し、それを毎回サーバーに送信する必要があります。その情報を保持する必要があるのは逆のようです。
rest - Erlang YAWS: シンプルな REST Web サービスをテストするには?
シンプルな Erlang YAWS ベースの RESTful アプリケーションで、RESTful API に HTTP リクエストを送信し、サーバーからレスポンスを取得して、それらのレスポンスをテストする一連のテストを作成したいと考えています。
各「send-request-get-request-test」テストを EUnit 内から実行できれば (テスト ジェネレーターを使用できるようにして) 便利です。
rebarまた、この一連のテストを( )で実行できるようにしたいと考えていますmake test。
最近は ibrowse別のアプリ(Mochiweb)で使っていたのですが、静かで使いづらいと感じました。
HTTP リクエストを YAWS RESTful アプリケーションに送信できる Erlang/OTP テストを作成する他のオプションはありますか? それを行う最も一般的な方法は何ですか?
javascript - ErlangのdecodeURIComponent
encodeURIComponentを使用してクライアント側でデータをエンコードします。
yawsサーバーでそれをデコードする方法は?
php - Erlide で YAWS を使用する方法 - Erlang
Erlang には組み込みの Web サーバー (YAWS) があることを読みました。私は Eclipse プラグイン Erlide を使用して Erlang を開発しています。たとえば、単に「hello world」PHP スクリプトを実行するために、そのような Web サーバーにアクセスする方法を考えていました。始めるためだけに。
webserver - MacOSXにYAWSをインストールする方法
以下は、Mac OSXマシンにYAWS(Yet Another Web Server)をインストールするためのステップバイステップのガイドです。10.6.8 SLでテストされ、問題なく動作しましたが、F5のスパムを開始した場合は、サーバーを再起動する必要があります。
amazon-ec2 - Ubuntu 12.04 への Yaws サーバーのインストール (クラウド サービスを使用)
クラウド サービス (Amazon AWS) で動作する Yaws Web サーバーを取得しようとしています。サーバーにローカルコピーをコンパイルしてインストールしました。私の問題は、ポート 8000 またはポート 80 で実行しているときに Yaws を実行できないことです。
yaws.conf に次の構成があります。
これにより、次の成功した起動/結果が生成されます。
Eshell V5.8.5 (^G で中止)
=INFO REPORT==== 16-Sep-2012::17:21:06 === Yaws: 構成ファイル /home/ubuntu/yaws.conf の使用
=INFO REPORT==== 16-Sep-2012::17:21:06 === Ctlfile : /home/ubuntu/.yaws/yaws/default/CTL
=INFO REPORT==== 16-Sep-2012::17:21:06 === Yaws: <3> 仮想サーバーの 0.0.0.0:8000 をリッスンしています: - http://domU-12-31-39 - 0B-1A-F6:8000 配下 /home/ubuntu/yaws/www/trial -
=INFO REPORT==== 16-Sep-2012::17:21:06 === Yaws: <1> 仮想サーバーの 0.0.0.0:4443 をリッスンしています: -
URL (http://ec2-72-44-47-235.compute-1.amazonaws.com) にアクセスしようとすると、接続されません。ポート 80 または 8000 が開いているかどうかを確認するために paping を使用しようとしました (http://code.google.com/p/paping/)。働く。
また、yaws.conf をポート 80 に設定してみました。次のように表示されます。
次のエラーが表示されます。
=エラー レポート==== 16-Sep-2012::17:24:47 === Yaws: リッスンに失敗しました 0.0.0.0:80: {error,eacces}
=エラー レポート==== 16-Sep-2012::17:24:47 === ソケットをリッスンできません: {error,eacces} =エラー レポート==== 16-Sep-2012::17: 24:47 === トップ プロシージャが停止、gserv を終了 =エラー レポート==== 16-Sep-2012::17:24:47 === トップ プロシージャが停止、gserv を終了 ===== 16-Sep -2012::17:24:47 === アプリケーション: yaws が終了しました: {shutdown,{yaws_app,start,[normal,[]]}} タイプ: 永続的 {"カーネル pid が終了しました",application_controller," {application_start_failure,yaws ,>>>>>>{シャットダウン,>{yaws_app,start,[ノーマル,[]]}}}"}
また、iptables を使用してポート 80 を開きました。sudo iptables -L を実行すると、次の出力が得られます。
Chain INPUT (policy ACCEPT) target prot opt source destination
ACCEPT tcp -- ip-192-168-2-0.ec2.internal ip-192-168-2-16.ec2.internal tcp dpt:http ACCEPT tcp -- 0.0 .0.0 どこでも tcp dpt:http ACCEPT all -- どこでも ctstate 関連、確立済み ACCEPT tcp -- どこでも どこでも tcp dpt:http ACCEPT tcp -- どこでも どこでも tcp dpt:httpChain FORWARD (policy ACCEPT) target prot opt source destination
Chain OUTPUT (policy ACCEPT) target prot opt source destination
お待ちいただきありがとうございます
couchdb - YAWSページのCouchbeam
YAWSのページからCouchbeamを使用しようとしているため、ここにいます。私はCBをテストしましたが、ターミナルから次を使用して正しく機能しました。
今、私は自分のWebページでローカルに行ったことを複製しようとしています。問題は、yawsページから「erl-pa ebin -pa deps / ibrowse /ebin-scouchbeam」を実行するようにerlに指示する方法がわからないことだと思います。
必要なすべてのアプリを実行しようとしましたが、次のようになりました。
これは私のerlコードです:
http - 高いクライアント ポーリング レートに対する Web サーバーの耐性: Cowboy 対 Yaws Web サーバー
私はリアルタイム通知システムを構築しています。これは Web アプリケーションの一部ですが、イベントは発生したらすぐに表示される必要があります。長時間のポーリングはオプションではありませんでした。イベントが利用できない場合に Web サーバーが接続を保持するとコストがかかるため、短時間のポーリングを使用する必要がありました。
各クライアントは、たとえば 2 秒ごとに Web サーバーにアクセスします (これはかなり高いレートです)。イベントが利用可能になると、JSON として JavaScript クライアントに送信されます。現在、これには、多数の短期間の接続を処理するためのサーバーのセットアップが必要です。Yaws Web サーバーを使用して、そのようなシステムの 1 つを実装しました。ただし、Yaws は他にも多くのサービスを開始するため、接続が 30,000 を超えると負荷が高くなり、接続が拒否または中止され始めます (おそらく、Yaws が実行されているのと同じ Erlang VM でいくつかの ETS テーブルを実行しているためです [これらを分離するために が必要rpc:call/4になる場合があります。オペレーティング システム固有の調整が必要であることは承知しており、それらは既に完了しています。
複数の Yaws インスタンスを簡単にクラスター化できる場合、これは問題になりません。Yaws では、いくつかの appmod を使用しており、RESTful な作業を行っています。Cowboy の Web サーバーが、ここでの機能を少し強化するのではないかと考えていました。カウボーイは使ったことがありませんが、ミスルティンは使ったことがあります。Cowboy を見ると、これは本格的な OTP アプリケーションであり、クラスタ化が容易で、軽量であるため、システム全体で処理できるクライアントの数が増える可能性があります。ストレージは Mnesia 上にあり、簡単に配布してノードを追加することができます (おそらくレプリケーションによって)。そのため、すべての Mnesia インスタンスの前に Cowboy インスタンスが存在します。
私の質問は次のとおりです。
Yaws から Cowboy に切り替えた場合、パフォーマンスが大幅に向上する可能性があるという私の推測は正しいですか?
AppmodsYaws には、#arg{}レコードを介したクリーンな API があります。カウボーイには、これら 2 つのものに相当するものがありますか (図を示してください)?Cowboyファイルのアップロードを処理できますか? もしそうなら、頻繁にファイルをアップロードする場合、どちらのサーバー (Yaws または Cowboy) を使用するのが良いと思いますか? Cowboy でファイルのアップロードがどのように行われるかを説明します。複数の Yaws インスタンスを同じマシンで実行することができます。サーバー (物理ボックス) ごとに多くの Yaws インスタンスを作成し、クライアントの負荷をこれらに分散させることは役立つと思いますか? これを行うために何を知る必要がありますか?
yaws.confパラメータを設定するmax_connections = nolimitと、カウボーイで同じものをどのように指定しますか?
今、私はカウボーイの著者とのインタビューをたどり、カウボーイがヨーズよりも軽量である理由について議論しています. 彼はこう言った
最大の違いは、リストの代わりにバイナリを使用することです。ジェネリック アクセプター プールは別のものです。他にも多くの小さな違いを挙げることができますが、これらは最も興味深いものではないと思います.
Cowboy はリスナー プール ライブラリRanchを使用しているため、どういうわけか、より多くの接続を処理する能力が高くなり、リストではなくバイナリを使用することになります。
同じインタビューからの別の引用:
接続ごとに 2 つではなく 1 つのプロセスを使用し、リストの代わりにバイナリを使用するため、ユーザーの介入なしでは、他のプロジェクトよりもはるかに少ないメモリを使用することになります。カウボーイも怠け者で、必要な場合以外は何もしません。そのため、ユーザーが関数の呼び出しを開始するまで、メモリはあまりありません。
yaws はこのケースをどのように処理するのだろうか。どういうわけか、問題のドメインには軽量の HTTP 処理が必要です。Mochiweb、Misultin、Cowboy などと比較して、Yaws がより多くのメモリを消費することは事実です。私の最大の懸念は、Yaws が最も優れた/最もクリーンな API を備えていることです。これにより、Erlang レコードとして必要なものすべてを含むものにアクセス#arg{}できるようになり、外部のものを抽出するための多数の機能を備えた他のものよりも自分でそれらを取得できるようになります。ドキュメンテーションでさえ: Yaws のドキュメンテーションは非常に優れており、簡単です。GETおそらく、ファイルのアップロードや単純なPOSTリクエスト処理などについて、Cowboy コードをもっと調べる必要があります。
そうでなければ、私が以前に尋ねた質問は差し迫った懸念として残っています. ヨーズはかなり良いですが、この高速で軽量で短期間の高率の世論調査の状況ではやり過ぎのようです。どう思いますか?
erlang - Calling a function from an .ERL to .YAWS file
I am very new to YAWS and ERLANG and would like to call a function from a different .erl file to the YAWS page.
i.e. I have a page called webpage.yaws and have another file called utilities.erl and would like to call a function from utilities.erl in webpage.yaws
Any ideas?
Thanks
erlang - 窒素 - ファイルのアップロード
#upload{}窒素の要素を使用してファイルを簡単にアップロードできます。うまく機能します。
ただし、クライアント側の Javascript を使用して html ファイルのアップロード フォームを作成していますが ( #upload{}Nitrogen .erl ファイルのタグを使用していません)、それを機能させることができません。
これにアプローチする方法についてのアイデアはありますか?
編集:ヨーズの上に窒素を使用しています。