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 pythonipcfrom pythonipc import PyIPCPyIPC(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.