socket.d 2.5.9__tar.gz → 2.5.11__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {socket.d-2.5.9 → socket.d-2.5.11}/PKG-INFO +1 -1
- {socket.d-2.5.9 → socket.d-2.5.11}/setup.py +1 -1
- {socket.d-2.5.9 → socket.d-2.5.11}/socket.d.egg-info/PKG-INFO +1 -1
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/SocketD.py +1 -1
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/Config.py +8 -1
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/impl/ConfigBase.py +8 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd_websocket/WsAioClientConnector.py +21 -11
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd_websocket/WsAioServer.py +8 -10
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd_websocket/impl/AIOServe.py +1 -11
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd_websocket/impl/AIOWebSocketServerImpl.py +25 -10
- {socket.d-2.5.9 → socket.d-2.5.11}/README.md +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/setup.cfg +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socket.d.egg-info/SOURCES.txt +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socket.d.egg-info/dependency_links.txt +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socket.d.egg-info/requires.txt +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socket.d.egg-info/top_level.txt +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socket.d.egg-info/zip-safe +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/__init__.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/broker/BroadcastBroker.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/broker/BrokerFragmentHandler.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/broker/BrokerListener.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/broker/BrokerListenerBase.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/broker/__init__.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/cluster/ClusterClient.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/cluster/ClusterClientSession.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/cluster/LoadBalancer.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/cluster/__init__.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/exception/SocketDExecption.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/exception/__init__.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/__init__.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/client/Client.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/client/ClientBase.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/client/ClientChannel.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/client/ClientConfig.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/client/ClientConfigHandler.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/client/ClientConnectHandler.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/client/ClientConnector.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/client/ClientConnectorBase.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/client/ClientHandshakeResult.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/client/ClientHeartbeatHandler.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/client/ClientProvider.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/client/ClientSession.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/client/__init__.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/Asserts.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/Channel.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/ChannelAssistant.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/ChannelInternal.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/ChannelSupporter.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/Codec.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/Costants.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/Entity.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/EntityMetas.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/Flags.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/FragmentAggregator.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/FragmentHandler.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/Frame.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/FrameIoHandler.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/Frames.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/HandshakeDefault.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/IdGenerator.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/Listener.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/Message.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/Processor.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/Session.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/__init__.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/codec/Buffer.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/codec/ByteBufferCodecReader.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/codec/ByteBufferCodecWriter.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/codec/CodecDefault.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/codec/__init__.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/entity/EntityDefault.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/entity/FileEntity.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/entity/MessageBuilder.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/entity/MessageDefault.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/entity/StringEntity.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/entity/__init__.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/fragment/FragmentAggregatorDefault.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/fragment/FragmentHandlerBase.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/fragment/FragmentHandlerDefault.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/fragment/FragmentHolder.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/fragment/__init__.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/impl/ChannelBase.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/impl/ChannelDefault.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/impl/ProcessorDefault.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/impl/SessionBase.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/impl/SessionDefault.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/impl/__init__.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/listener/EventListener.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/listener/PathListener.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/listener/PipelineListener.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/listener/RouteSelector.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/listener/RouteSelectorDefault.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/listener/SimpleListener.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/listener/__init__.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/server/Server.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/server/ServerBase.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/server/ServerConfig.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/server/ServerProvider.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/server/__init__.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/stream/RequestStream.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/stream/SendStream.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/stream/Stream.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/stream/StreamManger.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/stream/StreamMangerDefault.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/stream/SubscribeStream.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/stream/__init__.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/stream/impl/RequestStreamImpl.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/stream/impl/SendStreamImpl.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/stream/impl/StreamBase.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/stream/impl/SubscribeStreamImpl.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/stream/impl/__init__.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/utils/AsyncUtils.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/utils/CompletableFuture.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/utils/LogConfig.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/utils/MapUtils.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/utils/RunUtils.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/utils/SessionUtils.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/utils/StrUtils.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/utils/__init__.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/utils/async_api/AtomicRefer.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/utils/async_api/__init__.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/utils/sync_api/AtomicRefer.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd/utils/sync_api/__init__.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd_aio_tcp/TCPAIOServer.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd_aio_tcp/TCPStreamIO.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd_aio_tcp/TcpAIOChannelAssistant.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd_aio_tcp/TcpAioClient.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd_aio_tcp/TcpAioClientConnector.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd_aio_tcp/TcpAioProvider.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd_aio_tcp/__init__.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd_websocket/WsAioChannelAssistant.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd_websocket/WsAioClient.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd_websocket/WsAioProvider.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd_websocket/__init__.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd_websocket/impl/AIOConnect.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd_websocket/impl/AIOWebSocketClientImpl.py +0 -0
- {socket.d-2.5.9 → socket.d-2.5.11}/socketd_websocket/impl/__init__.py +0 -0
@@ -132,7 +132,8 @@ class Config(ABC):
|
|
132
132
|
...
|
133
133
|
|
134
134
|
@abstractmethod
|
135
|
-
def get_is_thread(self) -> bool:
|
135
|
+
def get_is_thread(self) -> bool:
|
136
|
+
...
|
136
137
|
|
137
138
|
@abstractmethod
|
138
139
|
def get_max_udp_size(self) -> int:
|
@@ -140,3 +141,9 @@ class Config(ABC):
|
|
140
141
|
返回允许的最大_uDP包大小。
|
141
142
|
"""
|
142
143
|
...
|
144
|
+
|
145
|
+
def is_use_subprotocols(self) -> bool:
|
146
|
+
"""
|
147
|
+
是否使用子协议
|
148
|
+
"""
|
149
|
+
...
|
@@ -52,6 +52,7 @@ class ConfigBase(Config, ABC):
|
|
52
52
|
|
53
53
|
self.__isThread = False
|
54
54
|
self.__loggerLevel = "INFO"
|
55
|
+
self.__useSubprotocols = True;
|
55
56
|
|
56
57
|
def __del__(self):
|
57
58
|
if self._exchangeExecutor:
|
@@ -216,3 +217,10 @@ class ConfigBase(Config, ABC):
|
|
216
217
|
def max_udp_size(self, maxUdpSize):
|
217
218
|
self._maxUdpSize = maxUdpSize
|
218
219
|
return self
|
220
|
+
|
221
|
+
def use_subprotocols(self, useSubprotocols):
|
222
|
+
self.__useSubprotocols = useSubprotocols
|
223
|
+
return self
|
224
|
+
|
225
|
+
def is_use_subprotocols(self) -> bool:
|
226
|
+
return self.__useSubprotocols
|
@@ -40,17 +40,27 @@ class WsAioClientConnector(ClientConnectorBase):
|
|
40
40
|
self._top = AsyncUtils.run_forever(self._loop, daemon=True)
|
41
41
|
|
42
42
|
try:
|
43
|
-
self.
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
43
|
+
if self.client.get_config().is_use_subprotocols():
|
44
|
+
self.__con: AIOConnect = AIOConnect(uri=ws_url,
|
45
|
+
client=self.client,
|
46
|
+
ssl=self.client.get_config().get_ssl_context(),
|
47
|
+
create_protocol=AIOWebSocketClientImpl,
|
48
|
+
subprotocols=[Subprotocol(SocketD.protocol_name())],
|
49
|
+
ping_timeout=self.client.get_config().get_idle_timeout() / 1000,
|
50
|
+
ping_interval=self.client.get_config().get_idle_timeout() / 1000,
|
51
|
+
logger=logger,
|
52
|
+
max_size=Constants.MAX_SIZE_FRAME,
|
53
|
+
message_loop=self._loop)
|
54
|
+
else:
|
55
|
+
self.__con: AIOConnect = AIOConnect(uri=ws_url,
|
56
|
+
client=self.client,
|
57
|
+
ssl=self.client.get_config().get_ssl_context(),
|
58
|
+
create_protocol=AIOWebSocketClientImpl,
|
59
|
+
ping_timeout=self.client.get_config().get_idle_timeout() / 1000,
|
60
|
+
ping_interval=self.client.get_config().get_idle_timeout() / 1000,
|
61
|
+
logger=logger,
|
62
|
+
max_size=Constants.MAX_SIZE_FRAME,
|
63
|
+
message_loop=self._loop)
|
54
64
|
|
55
65
|
self.__real: AIOWebSocketClientImpl | WebSocketClientProtocol = await self.__con
|
56
66
|
handshakeResult: ClientHandshakeResult = await self.__real.handshake_future.get(self.client.get_config().get_connect_timeout() / 1000)
|
@@ -38,16 +38,14 @@ class WsAioServer(ServerBase):
|
|
38
38
|
else:
|
39
39
|
__host = self.get_config().get_host()
|
40
40
|
|
41
|
-
self._server = AIOServe(
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
max_size=Constants.MAX_SIZE_FRAME
|
50
|
-
)
|
41
|
+
self._server = AIOServe(
|
42
|
+
host=__host,
|
43
|
+
port=self.get_config().get_port(),
|
44
|
+
create_protocol=AIOWebSocketServerImpl,
|
45
|
+
ws_aio_server=self,
|
46
|
+
ssl=self.get_config().get_ssl_context(),
|
47
|
+
logger=logger,
|
48
|
+
max_size=Constants.MAX_SIZE_FRAME)
|
51
49
|
|
52
50
|
log.info("Socket.D server started: {server=" + self.get_config().get_local_url() + "}")
|
53
51
|
await self._server
|
@@ -8,7 +8,6 @@ from wsgiref.headers import Headers
|
|
8
8
|
from websockets import WebSocketServerProtocol, LoggerLike, Origin, Subprotocol
|
9
9
|
from websockets.extensions import ServerExtensionFactory
|
10
10
|
from websockets.extensions.permessage_deflate import enable_server_permessage_deflate
|
11
|
-
from websockets.headers import validate_subprotocols
|
12
11
|
from websockets.http import USER_AGENT
|
13
12
|
from websockets import WebSocketServer
|
14
13
|
from websockets.legacy.server import HeadersLikeOrCallable, HTTPResponse, remove_path_argument,serve
|
@@ -20,15 +19,11 @@ class AIOServe:
|
|
20
19
|
辑
|
21
20
|
"""
|
22
21
|
|
23
|
-
def __init__(self,
|
24
|
-
Callable[[WebSocketServerProtocol], Awaitable[Any]],
|
25
|
-
Callable[[WebSocketServerProtocol, str], Awaitable[Any]],
|
26
|
-
], host: Optional[Union[str, Sequence[str]]] = None, port: Optional[int] = None, ws_aio_server=None, *,
|
22
|
+
def __init__(self, host: Optional[Union[str, Sequence[str]]] = None, port: Optional[int] = None, ws_aio_server=None, *,
|
27
23
|
create_protocol: Optional[Callable[..., WebSocketServerProtocol]] = None,
|
28
24
|
logger: Optional[LoggerLike] = None, compression: Optional[str] = "deflate",
|
29
25
|
origins: Optional[Sequence[Optional[Origin]]] = None,
|
30
26
|
extensions: Optional[Sequence[ServerExtensionFactory]] = None,
|
31
|
-
subprotocols: Optional[Sequence[Subprotocol]] = None,
|
32
27
|
extra_headers: Optional[HeadersLikeOrCallable] = None, server_header: Optional[str] = USER_AGENT,
|
33
28
|
process_request: Optional[
|
34
29
|
Callable[[str, Headers], Awaitable[Optional[HTTPResponse]]]
|
@@ -72,16 +67,12 @@ class AIOServe:
|
|
72
67
|
elif compression is not None:
|
73
68
|
raise ValueError(f"unsupported compression: {compression}")
|
74
69
|
|
75
|
-
if subprotocols is not None:
|
76
|
-
validate_subprotocols(subprotocols)
|
77
|
-
|
78
70
|
# 自定义protocol
|
79
71
|
factory = functools.partial(
|
80
72
|
create_protocol,
|
81
73
|
# For backwards compatibility with 10.0 or earlier. Done here in
|
82
74
|
# addition to WebSocketServerProtocol to trigger the deprecation
|
83
75
|
# warning once per serve() call rather than once per connection.
|
84
|
-
remove_path_argument(ws_handler),
|
85
76
|
ws_server,
|
86
77
|
host=host,
|
87
78
|
port=port,
|
@@ -99,7 +90,6 @@ class AIOServe:
|
|
99
90
|
legacy_recv=legacy_recv,
|
100
91
|
origins=origins,
|
101
92
|
extensions=extensions,
|
102
|
-
subprotocols=subprotocols,
|
103
93
|
extra_headers=extra_headers,
|
104
94
|
server_header=server_header,
|
105
95
|
process_request=process_request,
|
@@ -1,11 +1,11 @@
|
|
1
1
|
from __future__ import annotations
|
2
2
|
import asyncio
|
3
|
-
from typing import Optional, Union
|
3
|
+
from typing import Optional, Union, Sequence
|
4
4
|
|
5
|
-
from websockets import ConnectionClosedOK, ConnectionClosedError,
|
6
|
-
from websockets.frames import Opcode
|
5
|
+
from websockets import ConnectionClosedOK, ConnectionClosedError, Subprotocol, Headers, InvalidOrigin
|
7
6
|
from websockets.server import WebSocketServer, WebSocketServerProtocol
|
8
7
|
|
8
|
+
from socketd import SocketD
|
9
9
|
from socketd.transport.core.Channel import Channel
|
10
10
|
from socketd.transport.core.ChannelInternal import ChannelInternal
|
11
11
|
from socketd.utils.LogConfig import log
|
@@ -16,7 +16,7 @@ from socketd.transport.core.Frame import Frame
|
|
16
16
|
|
17
17
|
class AIOWebSocketServerImpl(WebSocketServerProtocol):
|
18
18
|
|
19
|
-
def __init__(self,
|
19
|
+
def __init__(self, ws_server: WebSocketServer, ws_aio_server: 'WsAioServer',
|
20
20
|
*args, **kwargs):
|
21
21
|
self.ws_aio_server = ws_aio_server
|
22
22
|
self.__ws_server: WebSocketServer = ws_server
|
@@ -27,6 +27,23 @@ class AIOWebSocketServerImpl(WebSocketServerProtocol):
|
|
27
27
|
*args,
|
28
28
|
**kwargs)
|
29
29
|
|
30
|
+
def process_subprotocol(self, headers: Headers, available_subprotocols: Optional[Sequence[Subprotocol]]) \
|
31
|
+
-> Optional[Subprotocol]:
|
32
|
+
header_values = headers.get_all("Sec-WebSocket-Protocol")
|
33
|
+
|
34
|
+
if self.ws_aio_server.get_config().is_use_subprotocols():
|
35
|
+
# 开启子协议验证的时候,如果不匹配则拒绝握手
|
36
|
+
if bool(header_values) and header_values.__contains__(SocketD.protocol_name()):
|
37
|
+
return Subprotocol(SocketD.protocol_name())
|
38
|
+
else:
|
39
|
+
raise InvalidOrigin("No subprotocols supported")
|
40
|
+
else:
|
41
|
+
if bool(header_values) and header_values.__contains__(SocketD.protocol_name()):
|
42
|
+
return Subprotocol(SocketD.protocol_name())
|
43
|
+
|
44
|
+
return super().process_subprotocol(headers, available_subprotocols)
|
45
|
+
|
46
|
+
|
30
47
|
def set_attachment(self, obj: ChannelInternal):
|
31
48
|
self.__attachment = obj
|
32
49
|
|
@@ -38,12 +55,10 @@ class AIOWebSocketServerImpl(WebSocketServerProtocol):
|
|
38
55
|
super().connection_open()
|
39
56
|
self.on_open(self)
|
40
57
|
|
41
|
-
async def
|
42
|
-
|
43
|
-
if
|
44
|
-
|
45
|
-
await self.assert_handshake()
|
46
|
-
return frame
|
58
|
+
async def keepalive_ping(self) -> None:
|
59
|
+
await asyncio.sleep(self.ping_interval)
|
60
|
+
if await self.assert_handshake():
|
61
|
+
return await super().keepalive_ping()
|
47
62
|
|
48
63
|
def on_open(self, conn) -> None:
|
49
64
|
"""create_protocol"""
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/fragment/FragmentAggregatorDefault.py
RENAMED
File without changes
|
File without changes
|
{socket.d-2.5.9 → socket.d-2.5.11}/socketd/transport/core/fragment/FragmentHandlerDefault.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|