복붙노트

[REDIS] 채널 층 또는 다른 무료 호스팅없이 채널

REDIS

채널 층 또는 다른 무료 호스팅없이 채널

난 내가 설명서를 따라 내가 레디 스과 함께 로컬 호스트에 채널을 실행할 수 있었다 호스트에 필요한 장고 2.0 NAD 장고 - channlels 2.0 프로젝트가 내가 pythonanywhere에서 호스팅 때, 내가 Heroku가에서 호스팅,하지만 난 내가 레디 스를 RRUN 수 whre redis.Are가 추가 호스팅 웹 사이트를 실행해야 해달라고 신용 카드 정보의 검증이 요구되었다 그럼, 지원 웹 소켓 doesnot을 보여 주었다 무료 erver

아니면이 channel_layer없이 채널을 구현하는 poosible 및 redis.My 코드가 로컬 호스트에 완벽하게 잘 작동하지만, 온라인에서 무료로 개최 할 수있다.

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"})

해당 수신기

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
        }))
CHANNEL_LAYERS = {
    "default": {
        "BACKEND": "channels_redis.core.RedisChannelLayer",
        "CONFIG": {
            "hosts": [("127.0.0.1", 6379)],
        },
    },
}

해결법

  1. ==============================

    1.워드 프로세서에서

    워드 프로세서에서

    그것은 당신이 의지 소비자에 self.channel_layer를 사용 할 수 없습니다 의미합니다.

    그래서, 그것은 선택 사항입니다하지만 당신은 그것을 필요합니다.

    메모리가 존재에서 :

    CHANNEL_LAYERS={
        "default": {
            "BACKEND": "channels.layers.InMemoryChannelLayer"
         }
    }
    
  2. from https://stackoverflow.com/questions/53271407/channels-without-channel-layer-or-any-other-free-hosting by cc-by-sa and MIT license