I am building an online game, which uses Django channels 2.1.5 for websockets.
I am able to build the connection between the client and the server, and also able to send data between them only inside the consumer class:
from channels.generic.websocket import WebsocketConsumer
import json
from . import controller
class GameConsumer(WebsocketConsumer):
def connect(self):
self.accept()
print("Wohooo .. Connected to client!")
self.render()
controller.startTurn()
def render(self, type="render", message=None):
self.send(controller.renderMap(type, message))
def disconnect(self, close_code):
print("WebSocket connection is lost...")
def receive(self, text_data):
text_data_json = json.loads(text_data)
controller.handleRecieved(text_data)
...
Now, What I wish to do, is to call the function render, -which is inside the consumer class-, from another module
I tried this:
from .. import consumer
def sendDeployments(owner, armies):
type = "renderDeployments"
message = owner + " has " + str(armies) + " to deploy"
dummyConsumer = consumer.GameConsumer()
consumer.GameConsumer.render(type, message)
But failed because I can't use the "self" parameter from outside the class.
Can anybody think of a way to achieve my goal?
Ps: I don't care about synchronization at this occasion.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…