1. ホーム
  2. ios

AWS LambdaでSocket.ioを使用することは可能ですか?

2023-07-12 14:15:21

質問内容

AWS Lambdaでwebsocketを作成し、サブスクライブしたアプリケーションにデータを送信する関数を構築することは可能でしょうか?

このようなものです。

Johnは携帯電話でSuperPhotoAppアプリを開いていますが、デスクトップのブラウザを使用してSuperPhotoAppサービス(S3バケット)に写真をアップロードすることにしました。このイベントは、socket.ioサーバーを作成するLambda関数を実行し、すべての加入者に更新をプッシュし、彼の電話はアプリを開いていたのでアプリは自動的に新しい写真で更新されました。

これはプッシュ通知やAmazon SNSでできることですが、例えばオンラインゲームでキャラクターの位置を更新する必要があるなど、リアルタイムの動作が必要な場合はどうすればいいのでしょうか。

Lambdaでできないのであれば、開いているアプリをデスクトップのブラウザで更新できるような解決策はないでしょうか?

Amazon EC2しかないのでしょうか?スケーリングに問題があると読んだことがあるので、Lambdaにコメントさせていただきました。

どのように解決するのですか?

ここで説明されたケースでは、Lambdaはうまくいかないと思います。 以下の AWS フォーラムへのリンクは、Lambda 関数が最大 15 分間しか実行できないこと、さらに関数の実行時間が 100 ミリ秒ごとに課金されるため、おそらくコスト高になることを指摘しています。 Amazonからは、「何度か要望を聞いているので、これを可能にする何らかの方法に興味がある」というコメントがあります。

https://forums.aws.amazon.com/thread.jspa?threadID=205761

EC2とNodeJSを使ってかなりの成功を収めているように見える人の投稿ですが、彼はWebsockets/wsというSocket.ioの代替品を使わなければならなかったそうです。

http://www.jayway.com/2015/04/13/600k-concurrent-websocket-connections-on-aws-using-node-js/

ロードバランサーの背後でサーバーを実行することを計画している場合、さらにいくつかの輪をくぐり抜けなければならないようです。

https://web.archive.org/web/20160118124227/http://coding-ceo.ghost.io/how-to-run-socket-io-behind-elb-on-aws