
import os

from aiohttp import web


WS_FILE = os.path.join(os.path.dirname(__file__), 'websocket.html')


async def wshandler(request):
    resp = web.WebSocketResponse()
    available = resp.can_prepare(request)
    if not available:
        with open(WS_FILE, 'rb') as fp:
            return web.Response(body=fp.read(), content_type='text/html')

    await resp.prepare(request)

    try:
        print('Someone joined.')
        for ws in request.app['sockets']:
            await ws.send_str('Someone joined')
        request.app['sockets'].append(resp)

        async for msg in resp:
            if msg.type == web.WSMsgType.TEXT:
                for ws in request.app['sockets']:
                    if ws is not resp:
                        await ws.send_str(msg.data)
            else:
                return resp
        return resp

    finally:
        request.app['sockets'].remove(resp)
        print('Someone disconnected.')
        for ws in request.app['sockets']:
            await ws.send_str('Someone disconnected.')


async def on_shutdown(app):
    for ws in app['sockets']:
        await ws.close()


def init():
    app = web.Application()
    app['sockets'] = []
    app.router.add_get('/', wshandler)
    app.on_shutdown.append(on_shutdown)
    return app


web.run_app(init())


import os

from aiohttp import web


WS_FILE = os.path.join(os.path.dirname(__file__), 'websocket.html')


async def wshandler(request):
    resp = web.WebSocketResponse()
    available = resp.can_prepare(request)
    if not available:
        with open(WS_FILE, 'rb') as fp:
            return web.Response(body=fp.read(), content_type='text/html')

    await resp.prepare(request)

    await resp.send_str('Welcome!!!')

    try:
        print('Someone joined.')
        for ws in request.app['sockets']:
            await ws.send_str('Someone joined')
        request.app['sockets'].append(resp)

        async for msg in resp:
            if msg.type == web.WSMsgType.TEXT:
                for ws in request.app['sockets']:
                    if ws is not resp:
                        await ws.send_str(msg.data)
            else:
                return resp
        return resp

    finally:
        request.app['sockets'].remove(resp)
        print('Someone disconnected.')
        for ws in request.app['sockets']:
            await ws.send_str('Someone disconnected.')


async def on_shutdown(app):
    for ws in app['sockets']:
        await ws.close()


def init():
    app = web.Application()
    app['sockets'] = []
    app.router.add_get('/', wshandler)
    app.on_shutdown.append(on_shutdown)
    return app


web.run_app(init())

Send welcome message at very first of communication channel
Send welcome message at very first of communication channel

  
  import os
  
  from aiohttp import web
  
  
  WS_FILE = os.path.join(os.path.dirname(__file__), 'websocket.html')
  
  
  async def wshandler(request):
      resp = web.WebSocketResponse()
      available = resp.can_prepare(request)
      if not available:
          with open(WS_FILE, 'rb') as fp:
              return web.Response(body=fp.read(), content_type='text/html')
  
      await resp.prepare(request)
+ 
+     await resp.send_str('Welcome!!!')
  
      try:
          print('Someone joined.')
          for ws in request.app['sockets']:
              await ws.send_str('Someone joined')
          request.app['sockets'].append(resp)
  
          async for msg in resp:
              if msg.type == web.WSMsgType.TEXT:
                  for ws in request.app['sockets']:
                      if ws is not resp:
                          await ws.send_str(msg.data)
              else:
                  return resp
          return resp
  
      finally:
          request.app['sockets'].remove(resp)
          print('Someone disconnected.')
          for ws in request.app['sockets']:
              await ws.send_str('Someone disconnected.')
  
  
  async def on_shutdown(app):
      for ws in app['sockets']:
          await ws.close()
  
  
  def init():
      app = web.Application()
      app['sockets'] = []
      app.router.add_get('/', wshandler)
      app.on_shutdown.append(on_shutdown)
      return app
  
  
  web.run_app(init())
  
Send welcome message at very first of communication channel
## Code Before:

import os

from aiohttp import web


WS_FILE = os.path.join(os.path.dirname(__file__), 'websocket.html')


async def wshandler(request):
    resp = web.WebSocketResponse()
    available = resp.can_prepare(request)
    if not available:
        with open(WS_FILE, 'rb') as fp:
            return web.Response(body=fp.read(), content_type='text/html')

    await resp.prepare(request)

    try:
        print('Someone joined.')
        for ws in request.app['sockets']:
            await ws.send_str('Someone joined')
        request.app['sockets'].append(resp)

        async for msg in resp:
            if msg.type == web.WSMsgType.TEXT:
                for ws in request.app['sockets']:
                    if ws is not resp:
                        await ws.send_str(msg.data)
            else:
                return resp
        return resp

    finally:
        request.app['sockets'].remove(resp)
        print('Someone disconnected.')
        for ws in request.app['sockets']:
            await ws.send_str('Someone disconnected.')


async def on_shutdown(app):
    for ws in app['sockets']:
        await ws.close()


def init():
    app = web.Application()
    app['sockets'] = []
    app.router.add_get('/', wshandler)
    app.on_shutdown.append(on_shutdown)
    return app


web.run_app(init())

## Instruction:
Send welcome message at very first of communication channel
## Code After:

import os

from aiohttp import web


WS_FILE = os.path.join(os.path.dirname(__file__), 'websocket.html')


async def wshandler(request):
    resp = web.WebSocketResponse()
    available = resp.can_prepare(request)
    if not available:
        with open(WS_FILE, 'rb') as fp:
            return web.Response(body=fp.read(), content_type='text/html')

    await resp.prepare(request)

    await resp.send_str('Welcome!!!')

    try:
        print('Someone joined.')
        for ws in request.app['sockets']:
            await ws.send_str('Someone joined')
        request.app['sockets'].append(resp)

        async for msg in resp:
            if msg.type == web.WSMsgType.TEXT:
                for ws in request.app['sockets']:
                    if ws is not resp:
                        await ws.send_str(msg.data)
            else:
                return resp
        return resp

    finally:
        request.app['sockets'].remove(resp)
        print('Someone disconnected.')
        for ws in request.app['sockets']:
            await ws.send_str('Someone disconnected.')


async def on_shutdown(app):
    for ws in app['sockets']:
        await ws.close()


def init():
    app = web.Application()
    app['sockets'] = []
    app.router.add_get('/', wshandler)
    app.on_shutdown.append(on_shutdown)
    return app


web.run_app(init())
