Serverless web socket server?

Are there any serverless technologies that allow a serverless websocket server to be built?

I know the nature of long running connections is that they are stateful, but if the only state is the connection itself at the transport layer then it seems like there could be a serverless product that abstracts this away so you only deal with the application layer. Is there a cloud provider (AWS, Azure, etc) that allows this? I can't see a way for AWS Lambda or Azure Functions to achieve this.

Anyone got any ideas? Just checking.

Thanks


Currently AWS Lambda and Azure Functions doesn't support this. If you plan to setup an scalable environment in AWS with websockets, you can use Application Load Balancer and in front of ECS cluster or EC2 instances with Websocket supported server like NodeJS.

Another solution is to go with fully managed services, like Google Firebase Service or Pubnub in your architecture to handle the real-time part.


if the only state is the connection itself at the transport layer

That's not really the case. Web socket connections exchange keep-alives as layer 7 payload. Others might argue that it's more accurately described as a sublayer somewhere between layers 6 and 7... but in any event, it is well-above the transport layer.

And many applications use web sockets in other ways that are also not stateless. Once connected, then authenticated, there's no need to continually re-authenticate, because the client on the socket now will be the same client 15 minutes from now, and this is overhead that would not be avoidable in a serverless environment -- every action on a websocket would need to be re-authenticated. For another example, with a constant data stream, the server might keep track of what has been sent or what specific subset of the stream the client is interested in.

If you aren't maintaining (or don't need) a persistent connection to a server, the question could be asked "why are you using a web socket?"

Perhaps also relevant: HAProxy, a commonly used load balancer with web socket support, maintains a persistent connection to a single back-end server for each current web socket connection. If that backend server goes offline, there's no provision in the balancer to choose another back-end for the existing connection. The client will need to reconnect.


AWS IoT provides MQTT endpoints and it supports MQTT + WebSocket on port 443. This might be the closest thing you can get as a hosted service on AWS. Check this link: AWS IoT Protocols You can define rules that trigger Lambdas on AWS IoT or pass them to Kinesis and process streams through Lambdas.

链接地址: http://www.djcxy.com/p/95604.html

上一篇: 大小写的语法意义何时?

下一篇: 无服务器Web服务器?