Skip to content
This repository was archived by the owner on Jan 5, 2026. It is now read-only.

Fixed issue with websocket connections being closed when deep linking …#2146

Merged
tonyanziano merged 1 commit intov4.9.0from
toanzian/deeplink-fix
May 14, 2020
Merged

Fixed issue with websocket connections being closed when deep linking …#2146
tonyanziano merged 1 commit intov4.9.0from
toanzian/deeplink-fix

Conversation

@tonyanziano
Copy link
Copy Markdown
Contributor

…into a conversation.

===

Fixes #2144

===

This issue was a Windows-only (possibly Linux as well) bug that was happening due to the following:

  1. The Emulator (on Windows) parses deep links / protocol URLs after we receive an event from the client saying that the Welcome page has rendered
  2. This step happens before the browser window ready-to-show event is fired, and so before the WebSocket server is initialized
  3. The start conversation action dispatched by the protocol URL in step 1 then triggers the start conversation flow which eventually makes a call to the getWebSocketPort route
  4. The getWebSocketPort route starts the websocket server if not already running, and then returns the port. In the deep linking case, this always starts the server
  5. The conversation with Web Chat is started with a successfully connected websocket
  6. The ready-to-show browser window event is then fired and the web socket server is re-initialized which then calls cleanup(), closing the previously connected websocket for the running conversation
  7. now messages do properly flow out of WebChat, through the emulator, to the bot, and back to the emulator, but the websocket is no longer there to complete the trip to WebChat
  8. This results in a broken WebChat UI where none of the messages are seen as "sent" and none of the bot responses are rendered

===

This PR fixes that issue by changing the websocket server logic to only initialize the server once and return the port, instead of re-initializing if already running.

This means that the second call to WebSocketServer.init() in step 6 above results in a no-op and instead just returns the websocket server port.

===

This does not occur on Mac because the protocol URLs are parsed and executed after the initial setup of the websocket server inside of the ready-to-show browser window event handler

@tonyanziano tonyanziano force-pushed the toanzian/deeplink-fix branch from df01ef8 to ebb27aa Compare May 14, 2020 21:48
@srinaath
Copy link
Copy Markdown
Contributor

Nice catch!!

@tonyanziano tonyanziano merged commit 4681f24 into v4.9.0 May 14, 2020
@tonyanziano tonyanziano deleted the toanzian/deeplink-fix branch May 14, 2020 22:08
tonyanziano added a commit that referenced this pull request May 14, 2020
* Prepped v4.9.0 release

* Bump webchat to 4.9.0

Signed-off-by: Srinaath Ravichandran <[email protected]>

* Changelog updated

Signed-off-by: Srinaath Ravichandran <[email protected]>

* Changed readme

Signed-off-by: Srinaath Ravichandran <[email protected]>

* Allow micrphone usage from electron

Signed-off-by: Srinaath Ravichandran <[email protected]>

* Updates to lock files

Signed-off-by: Srinaath Ravichandran <[email protected]>

* Removed dependancies to botbuilder myget for regular npm js libs

Signed-off-by: Srinaath Ravichandran <[email protected]>

* Revert lock back to master

Signed-off-by: Srinaath Ravichandran <[email protected]>

* PR number update

Signed-off-by: Srinaath Ravichandran <[email protected]>

* Fixed issue with websocket connections being closed when deep linking into a conversation. (#2146)

Co-authored-by: Srinaath Ravichandran <[email protected]>
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants