serverless-websockets-quest
DurableFunctionsMonitor
Our great sponsors
serverless-websockets-quest | DurableFunctionsMonitor | |
---|---|---|
5 | 1 | |
8 | 209 | |
- | - | |
0.0 | 9.0 | |
7 months ago | about 2 years ago | |
TypeScript | TypeScript | |
Apache License 2.0 | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
serverless-websockets-quest
-
One year at Ably as a Developer Advocate
Live demo
-
Using serverless WebSocksets with Azure Functions & Durable Entities
Hi all, I created a web app (ADnD style mini game) recently to demonstrate how to use serverless WebSockets (Ably) and combine it with Azure Functions to send realtime updates to the client (based on VueJS and hosted on Azure Static Web Apps). The Azure Functions use Durable Entities (part of Durable Functions) to store a centralized game state, and as soon as the state is updated the clients are notified of this change. Full blog post is here, the game can be played here, and you can have look at the code on GitHub.
-
Quest for serverless WebSockets, an adventure with Azure Functions & Durable Entities
[JsonObject(MemberSerialization.OptIn)] public class GameState : IGameState { // Only showing the class members relevant for this blog section. // For the full implementation see https://github.com/ably-labs/serverless-websockets-quest/blob/main/api/Models/GameState.cs [JsonProperty("questId")] public string QuestId { get; set; } [JsonProperty("phase")] public string Phase { get; set; } public async Task InitGameState(string[] gameStateFields) { QuestId = gameStateFields[0]; Phase = gameStateFields[1]; await _publisher.PublishUpdatePhase(QuestId, Phase); } [JsonProperty("players")] public List PlayerNames { get; set; } public async Task AddPlayerName(string playerName) { if (PlayerNames == null) { PlayerNames = new List { playerName }; } else { PlayerNames.Add(playerName); } if (IsPartyComplete) { await UpdatePhase(GamePhases.Play); await Task.Delay(2000); await AttackByMonster(); } } public async Task UpdatePhase(string phase) { Phase = phase; await _publisher.PublishUpdatePhase(QuestId, Phase); } private async Task AttackByMonster() { var playerAttacking = CharacterClassDefinitions.Monster.Name; var playerUnderAttack = GetRandomPlayerName(); var damage = CharacterClassDefinitions.GetDamageFor(CharacterClassDefinitions.Monster.CharacterClass); await _publisher.PublishPlayerAttacking(QuestId, playerAttacking, playerUnderAttack, damage); await Task.Delay(1000); var playerEntityId = new EntityId(nameof(Player), Player.GetEntityId(QuestId, playerUnderAttack)); Entity.Current.SignalEntity(playerEntityId, proxy => proxy.ApplyDamage(damage)); await Task.Delay(1000); var nextPlayerName = GetNextPlayerName(CharacterClassDefinitions.Monster.Name); await _publisher.PublishPlayerTurnAsync(QuestId, $"Next turn: {nextPlayerName}", nextPlayerName); } }
DurableFunctionsMonitor
-
Durable Functions vs. Apache Airflow
Durable Functions exposes a set of management APIs over HTTP and language-specific SDK APIs. However, there are no built-in tools for doing this kind of visualization (though some 3rd party tools are available). In terms of monitoring, Durable Functions emits detailed telemetry into Application Insights, which is quite powerful but has its own learning curve for creating alerts, visualizations, etc. More information on diagnostics and monitoring for Durable Functions can be found here.
What are some alternatives?
agile-flush-vue-app - Use this app to collaboratively estimate the stories for the next sprint.
serverless-adapter - Run REST APIs and other web applications using your existing Node.js application framework (NestJS, Express, Koa, tRPC, Fastify and many others), on top of AWS, Azure, Huawei and many other clouds.
ably-control-api-action - A GitHub Action to use the Ably Control API.
static-web-apps-cli - Azure Static Web Apps CLI ✨
oclif - CLI for generating, building, and releasing oclif CLIs. Built by Salesforce.
Chat-App-Serverless-MicroServices-Demo - Chat app that demonstrates serverless microservices as a minimal example
collaborative-pixel-drawing - A collaborative pixelart drawing carnvas to demonstrate pub/sub using Ably or Azure WebPubSub.
serverless-azure-functions - Serverless Azure Functions Plugin – Add Azure Functions support to the Serverless Framework
serverless-workflow-visualizer - Web application that uses Ably to visualize the progress of a serverless workflow.
az-func-as-a-graph - Visualizes your Azure Functions project in form of a graph