Python Autobahnpython class library tutorial and use guide
Python Autobahn is a Python class library for WebSockets and Wamp (Web Application Messaging Protocol).It provides a fast, reliable and flexible way to create real -time applications, such as chat rooms, games, trading platforms, etc.
First, let's take a look at the basic concepts and usage of Autobahn.
Installation and configuration
To use Autobahnpython, you need to install it first.You can use the following command to use PIP for installation:
pip install autobahn
Create a WebSocket server
When using Autobahn, you need to write a WebSocket server to handle the connection and messages of the client.The following is a simple example code:
python
from autobahn.asyncio.websocket import WebSocketServerProtocol, WebSocketServerFactory
import asyncio
class MyServerProtocol(WebSocketServerProtocol):
def onConnect(self, request):
print("Client connected: {0}".format(request.peer))
def onOpen(self):
print("WebSocket connection open.")
def onMessage(self, payload, isBinary):
if isBinary:
print("Binary message received: {0} bytes".format(len(payload)))
else:
print("Text message received: {0}".format(payload.decode('utf8')))
# Echo back the message
self.sendMessage(payload, isBinary)
def onClose(self, wasClean, code, reason):
print("WebSocket connection closed: {0}".format(reason))
if __name__ == '__main__':
factory = WebSocketServerFactory()
factory.protocol = MyServerProtocol
loop = asyncio.get_event_loop()
coro = loop.create_server(factory, '127.0.0.1', 9000)
server = loop.run_until_complete(coro)
try:
loop.run_forever()
except KeyboardInterrupt:
pass
finally:
server.close()
loop.run_until_complete(server.wait_closed())
loop.close()
The above code creates a WebSocket server, and uses the `MyServerprotocol` class to define the server's behavior.In the `OnConnect` method, you can handle the connection request of the client; in the` Onopen` method, you can handle the operation of the websocket connection; and the `OnMessage` method can handle the received messages and send a response message.
Exempable WebSocketserverFactory class, and set the MyServerprotocol class defined by Protocol.Then use Asyncio to create a server and run it through the method of `run_until_complete`.
Create a WebSocket client
In addition to creating a server, we can also use Autobahnpython to create a WebSocket client.The following is a simple example code:
python
from autobahn.asyncio.websocket import WebSocketClientProtocol, WebSocketClientFactory
import asyncio
class MyClientProtocol(WebSocketClientProtocol):
async def onConnect(self, response):
print("Server connected: {0}".format(response.peer))
await self.sendMessage(b"Hello, server!")
def onOpen(self):
print("WebSocket connection open.")
def onMessage(self, payload, isBinary):
if isBinary:
print("Binary message received: {0} bytes".format(len(payload)))
else:
print("Text message received: {0}".format(payload.decode('utf8')))
def onClose(self, wasClean, code, reason):
print("WebSocket connection closed: {0}".format(reason))
if __name__ == '__main__':
factory = WebSocketClientFactory()
factory.protocol = MyClientProtocol
loop = asyncio.get_event_loop()
coro = loop.create_connection(factory, '127.0.0.1', 9000)
client = loop.run_until_complete(coro)
try:
loop.run_forever()
except KeyboardInterrupt:
pass
finally:
client.close()
loop.run_until_complete(client.wait_closed())
loop.close()
The above code creates a WebSocket client, and uses the `MyClientProtocol` class to define the client behavior.In the `OnConnect` method, you can handle the connection with the server and send the initial message; in the` Onopen` method, you can process the operation of the WebSocket connection when successful; and the `onMessage` method can process the received messages.
Exemplary WebSocketClientFactory class, and set the MyClientProtocol class defined by Protocol.Then use Asyncio to create a client and run it through the method of `run_until_complete`.
Thread safe operation
In addition to the basic WebSocket communication, Autobahnpython also provides some threads security operations, such as timer and delayed execution.The following is an example:
python
from autobahn.asyncio.component import Component
import asyncio
async def start_component():
component = Component(
transports=[
{
"url": "ws://localhost:9000",
"type": "websocket",
"endpoint": {
"type": "tcp",
"host": "localhost",
"port": 9000
},
},
],
realm="realm1",
authentication={
"wampcra": {
"authid": "myuser",
"secret": "mypassword",
"role": "user",
"salt": "somesalt"
}
}
)
async def on_welcome(session, details):
print("Connected to server!")
component.on('on_welcome', on_welcome)
await component.start()
if __name__ == '__main__':
loop = asyncio.get_event_loop()
coro = loop.create_task(start_component())
try:
loop.run_until_complete(coro)
except KeyboardInterrupt:
pass
finally:
loop.stop()
The above code creates a component through the Component class, and uses WebSocket as the transmission method.We designate the connected URL, field and identity verification information.
In an example, we define a callback function called `On_welcome` to process the operation of connecting with the server.
Finally, we use Asyncio to create and run components.
Summarize
Through the above example, you should have a certain understanding of the basic concepts and usage of Autobahnpython.Not only can we create a WebSocket server and client, but also the thread security operation.
Autobahnpython provides powerful and flexible functions, making the development of real -time applications easier and efficient.I hope this article will help your learning and using Autobahnpython!