/quick-net

This is a top level socket library, making servers and clients EASY!

Primary LanguagePythonMIT LicenseMIT

quick-net

Sockets don't have to be a pain

That's the motto this library was built with, and that's exactly what we made! This is a top-level socket library, great for games, chat, or anything networking in general!

How to install

As of now, this repo doesn't have a setup.py (which will be added later), however it's easy enough to make one yourself. But to make it easy, it's also on pip

pip install quick-connect  # pip3 on linux machines.

And please, don't get confused by the installation name, you import it as so:

import quicknet

How to use

quick-connect is event based. That means, you can register handlers for when you receive a certain input. For example, let's say I wanted my client, to print the welcome message from the server. I might do something like this in my client program:

@client.on("WELCOME")
def welcome_msg(message):
    print("SERVER:", message)

The first line, basicly adds the function to the client, so the client can run it when it receives that event from the server. The second line declares the function, which accepts a message (possitional arguemnt) from the server. The last line prints it out. Now, on the server side, how might we invoke this? Well, we have 2 ways, the first way, is to get the client object, and emit that message to it.

joined_client.emit("WELCOME", "Welcome to my awesome game!")

However, let's say you wanted to tell every client, a player joined. Then you can use the broadcast function.

server.broadcast("WELCOME", "Player {name} just joined the party!".format(name="Joe"))

Docs

See the github wiki on this repo for the docs, which has the API, and more details, such as how to communicate to a server using quick-connect, without quick-connect.

Design

flowchart Enough said.

Credits

This was made by Nathan Zilora, also on discord known as Zwack010#5682 This project is registered in the MIT licesnse, so make sure to include the license, if using this project directly.