Websockets in Python

Поделиться
HTML-код
  • Опубликовано: 21 сен 2024
  • WebSocket is a protocol for machine-to-machine communication that keeps a TCP connection open for bi-directional passing of information. The websocket is a connection between two computers. The connection can be used to either send or receive information from either computer. The websocket can be configured as a server or client. A websocket server listens for requests and returns a result based on the input. The server can also function as a client by sending information without a specific request.
    Websockets Overview: apmonitor.com/...

Комментарии • 24

  • @abdullahyousef3596
    @abdullahyousef3596 8 месяцев назад +3

    Thank you for this video, it was really helpful!

  • @kylanwalters37
    @kylanwalters37 9 месяцев назад +2

    Very helpful info! Thank you

  • @Hallucinarix
    @Hallucinarix 3 месяца назад +1

    is there a reason you nested the uri within the function rather than an outside variable that's easier to visually identify? (say when needing to change when going from dev to production)

  • @chenbruce318
    @chenbruce318 4 месяца назад +2

    thanks for such comprehensive sharing!!
    I have one question, are there any suggested solutions that allow me to deploy my websocket server to let external devices access it through link like wss:// ?

    • @rrc
      @rrc 4 месяца назад +1

      Yes, no problem on deploying it as a web service. Just open the firewall on port 443 to not block the connection.

  • @georgigeorgiev3970
    @georgigeorgiev3970 2 месяца назад +1

    This works fine. But each client has its own socket with the server. Is there a way to make it like all clients see the changes other client does on server?
    For example having them connected to the same socket, or server sends info via each socket once DB changes?

    • @apm
      @apm  2 месяца назад

      MQTT has a broker that serves as a database: apmonitor.com/dde/index.php/Main/MQTTProtocol MQTT is often used for devices that are intermittently connected and where fault tolerance is needed.
      OPC UA has server where values are stored: apmonitor.com/dde/index.php/Main/OPCTransfer OPC is used in industrial automation.
      Modbus has a server / client function: apmonitor.com/dde/index.php/Main/ModbusTransfer It is an older standard that is fast and reliable.

  • @IsraelAlfaro
    @IsraelAlfaro 6 месяцев назад +2

    Thanks so much for this video! It was very helpful. I am now wondering, how could you introduce authentication in order to connect to the websocket server? e.g. as you would with a Bearer Token when using RESTful APIs. Thanks a gain! Cheers!

    • @apm
      @apm  6 месяцев назад +2

      To introduce authentication to a WebSocket server, you have several options: authenticate during the initial WebSocket handshake by including a token in the URL or a custom HTTP header, authenticate immediately after the connection using the first message from the client, leverage existing session IDs, or use tokens from OAuth or external providers. Use WebSocket Secure (WSS) with TLS/SSL to ensure the security of the authentication tokens and data transmitted. The choice of method depends on your application requirements and architecture, and you should also consider the management of token expiration and renewal due to the long-lived nature of WebSocket connections.

    • @IsraelAlfaro
      @IsraelAlfaro 6 месяцев назад +1

      @@apm thanks so much! Would you mind recommending another video/tutorial/post I could use as a reference, to follow along? Thanks once more!

    • @apm
      @apm  6 месяцев назад +1

      @@IsraelAlfaro more information is on the Data-Driven Engineering course website, freely available at apmonitor.com/dde

  • @prasaddissanayake1718
    @prasaddissanayake1718 10 месяцев назад +2

    excellent

  • @alaaosama7679
    @alaaosama7679 2 месяца назад

    I know it’s a stupid question but aren’t websockets requiring internet to work?

    • @apm
      @apm  2 месяца назад +1

      @@alaaosama7679 websockets communicate over TCP/IP. WebSockets in Python do not inherently require the Internet to work. WebSockets are designed to establish a full-duplex communication channel over a single TCP connection, which can be used on local networks as well as over the Internet. Whether they need the Internet depends on the specific application and the endpoints involved in the communication. If both the WebSocket client and server are on the same local network or even the same machine, the Internet is not required.

  • @UncleDavid
    @UncleDavid Год назад +3

    can you make a tutoriel-if possible-on sending HTML over websocket without js

    • @DuneKraftwerk
      @DuneKraftwerk Год назад +2

      Websocket is a library, you need a program to load this library, like js for instance and then sending a html strings will be possible

  • @Anorch-oy9jk
    @Anorch-oy9jk 5 месяцев назад

    if my server also has to handle api calls, how can I combine that? I know how to asnyc it, but my issue is the server IP. Locally I use fast api and a ws endpoint. But once deployed with https protocol, the ws endpoint no longer works

    • @apm
      @apm  4 месяца назад +1

      You need to switch to wss instead of ws for https protocol.

    • @Anorch-oy9jk
      @Anorch-oy9jk 4 месяца назад

      @@apm managed to do it! The clients needed to do a handshake cause the server was secured hosted as https and so the ws endpoint also switched to secured wss.

  • @HigherOrderBeing
    @HigherOrderBeing 10 месяцев назад +3

    bro why u speaking in 0.25

    • @apm
      @apm  10 месяцев назад +16

      Yes, I'm speaking slowly. Fortunately, RUclips allows you to increase speed up to 2x :)

    • @upsenloyn
      @upsenloyn 6 месяцев назад

      ​@@apmgood one

  • @Hallucinarix
    @Hallucinarix 3 месяца назад +1

    is there a reason you nest the uri within a function rather than being declared outside as a variable that can easier be visually identified when needing to be changed? (say going from dev to production)

    • @apm
      @apm  3 месяца назад +1

      Great idea - it just adds an additional input parameter to the function, but makes the code more modular and reusable for other applications.