Skip to content

Commit

Permalink
Cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
shibijm committed Jul 29, 2023
1 parent 19cb32b commit 62a20e0
Show file tree
Hide file tree
Showing 11 changed files with 720 additions and 37 deletions.
19 changes: 19 additions & 0 deletions .github/workflows/build-and-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
name: Build and release
run-name: Build and release ${{ inputs.version || github.ref_name }}
on:
push:
tags:
- v*
workflow_dispatch:
inputs:
version:
required: true
type: string
description: Version (vX.X.X.X)
jobs:
build-python-release:
uses: shibijm/gh-actions-workflows/.github/workflows/build-python-release-preset-1.yml@master
with:
version: ${{ inputs.version || github.ref_name }}
permissions:
contents: write
13 changes: 13 additions & 0 deletions COPYRIGHT
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
Copyright (c) 2018-2023 Shibi J M

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License, version 3,
as published by the Free Software Foundation.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
661 changes: 661 additions & 0 deletions LICENSE

Large diffs are not rendered by default.

1 change: 0 additions & 1 deletion Procfile

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,15 @@
from utils.logging import logger
from websockets.exceptions import ConnectionClosedError
from websockets.legacy.protocol import broadcast
from websockets.server import serve, WebSocketServerProtocol
import asyncio
from websockets.server import WebSocketServerProtocol
import functools
import json
import traceback

class WebSocketServer:
class WebSocketController:

users: list[User] = []

def __init__(self, port: int) -> None:
self.port = port
asyncio.run(self.start())

async def start(self) -> None:
server = await serve(self.connectionHandler, None, self.port, ping_interval = None, ping_timeout = None)
await server.wait_closed()
def __init__(self, users: list[User]) -> None:
self.users = users

def broadcast(self, room: str, envelope: WebSocketEnvelope, excludedUser: Optional[User] = None) -> None:
userWebSockets = [user.websocket for user in self.getUsersInRoom(room) if user != excludedUser]
Expand Down
2 changes: 1 addition & 1 deletion controllers/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
from .WebSocketServer import WebSocketServer as WebSocketServer
from .WebSocketController import WebSocketController as WebSocketController
23 changes: 14 additions & 9 deletions main.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,19 @@
from controllers import WebSocketServer
from controllers import WebSocketController
from models import User
from utils import KeepAlive
from utils.logging import logger
from websockets.server import serve
import asyncio
import os

isHeroku = "PORT" in os.environ
port = int(os.environ["PORT"]) if isHeroku else 22334

if isHeroku:
logger.info("Heroku detected, activating keep-alive mode")
KeepAlive()

port = int(os.environ["PORT"]) if "PORT" in os.environ else 22334
users: list[User] = []
webSocketController = WebSocketController(users)
keepAliveUrl = os.environ.get("KEEPALIVE_URL")
if keepAliveUrl:
KeepAlive(keepAliveUrl, users)
async def run() -> None:
server = await serve(webSocketController.connectionHandler, None, port, ping_interval = None, ping_timeout = None)
await server.wait_closed()
logger.info("Starting WebSocket server on port %s", port)
WebSocketServer(port)
asyncio.run(run())
2 changes: 1 addition & 1 deletion models/User.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from .WebSocketEnvelope import WebSocketEnvelope
from typing import Optional
from utils import AsyncTimer
from utils.logging import logger
from typing import Optional
from websockets.legacy.server import WebSocketServerProtocol
import json

Expand Down
7 changes: 0 additions & 7 deletions pyrightconfig.json

This file was deleted.

1 change: 0 additions & 1 deletion runtime.txt

This file was deleted.

12 changes: 7 additions & 5 deletions utils/KeepAlive.py
Original file line number Diff line number Diff line change
@@ -1,17 +1,19 @@
from controllers import WebSocketServer
from models import User
import requests
import threading
import time

class KeepAlive(threading.Thread):

def __init__(self) -> None:
def __init__(self, url: str, users: list[User]) -> None:
super().__init__()
self.url = url
self.users = users
self.daemon = True
self.start()

def run(self) -> None:
while (True):
time.sleep(900)
if (len(WebSocketServer.users) > 0):
requests.get("https://watchalong-s.herokuapp.com")
time.sleep(600)
if self.users:
requests.get(self.url)

0 comments on commit 62a20e0

Please sign in to comment.