我在django 2.0 nad django-channlels 2.0中有一个需要托管的项目,我按照文档进行操作,能够在localhost和redis上运行通道,但是当我在pythonanywhere上托管时,它表明它不支持websocket,所以我托管在heroku上,但在那里他们要求我不必运行redis的信用卡信息的验证。是否有其他托管网站可以免费运行redis erver
或者在没有channel_layer和redis的情况下实现通道是否可行。我的代码在本地主机上运行良好,但不能免费在线托管。
class PageConsumer(WebsocketConsumer):
def connect(self, **kwargs):
self.accept()
channel_layer = get_channel_layer()
async_to_sync(channel_layer.group_send)("admin", {"type": "analytics.admin_message", "message": "plus"})
def disconnect(self, close_code):
channel_layer = get_channel_layer()
async_to_sync(channel_layer.group_send)("admin", {"type": "analytics.admin_message", "message": "minus"})
Run Code Online (Sandbox Code Playgroud)
其对应的接收者
class ChatConsumer(WebsocketConsumer):
def connect(self, **kwargs):
self.accept()
async_to_sync(self.channel_layer.group_add)("admin", self.channel_name)
def disconnect(self, close_code):
async_to_sync(self.channel_layer.group_discard)("admin", self.channel_name)
def analytics_admin_message(self, something):
if something["message"] == "plus":
self.send(text_data=json.dumps({
'message': "plus"
}))
else:
self.send(text_data=json.dumps({
'message': "minus"
}))
def receive(self, text_data):
print("data hai bhyi", text_data)
text_data_json = json.loads(text_data)
message = text_data_json['message']
self.send(text_data=json.dumps({
'message': message
}))
Run Code Online (Sandbox Code Playgroud)