This project is solely used because I hate using js for IPC controls
Essentially this is a python port of electron IPC module
Instead of the renderer interacting with the main process, a socketio client is used to communicate with a python3 socketio server
A package for javascript client is available under the following git:
Simply install using pip or your favourite package manager
pip install pythonipc
from pythonipc import PyIPC
PyIPC(port: int = 5000, debug = False)
Creates a new PyIPC instance.
port
: The port number to run the server on (default is 5000)
Starts the PyIPC server in a separate thread.
ipc = PyIPC()
ipc.start()
Decorator to register a handler for a specific event.
@ipc.on('greet')
def greet_handler(data):
return f"Hello, {data['name']}!"
Removes a handler for a specific event.
ipc.off('greet')
Invokes a remote procedure and waits for its response.
result = ipc.invoke('greet', {'name': 'Alice'})
print(result) # Outputs: Hello, Alice!
Get the number of connected clients.
connections = ipc.get_connections()
print(f"There are {connections} clients connected")
Check if there are any connected clients.
if ipc.has_connection():
print("We have a connection!")
Stops the PyIPC server and cleans up resources.
ipc.kill()
from pythonipc import PyIPC
ipc = PyIPC(port=5000)
@ipc.on('greet')
def greet_handler(data):
return f"Hello, {data['name']}!"
def main():
ipc.start()
try:
result = ipc.invoke('greet', {'name': 'Alice'})
print(result) # Outputs: Hello, Alice!
finally:
ipc.kill()
main()
This example sets up a PyIPC server, registers a 'greet' handler, invokes it, and then shuts down the server.