First, confirm that external interference with the websocket protocol is the root cause in your situation. This can be done using either or both of the following methods:
Method 1: Disabling websockets
As a diagnostic test to confirm this is the issue in your environment, you can disable the use of websockets in Spotfire by setting webSocketsEnabled="False" in the
Spotfire Web Player configuration (and ensuring the updated configuration is used by your Web Player, see
Manually editing the service configuration files). Note: If you are going to analyze streaming data in web clients, this variable must be set to true, but even if you plan to use streaming, disabling this setting can be very useful way to help isolate the root cause.
If the files open successfully after disabling WebSockets, then the issue is confirmed to be due to interference with the websocket protocol in the environment and investigation needs to continued by the end-user's IT or network team.
Method 2: Websocket test separate from TIBCO Spotfire
Another diagnostic tool is to run the attached javascript (ws-spotfire) that mimics Spotfire's use of WebSockets. A short video (ws-test.mp4) showing its use is also attached.
This small test app (ws-server.zip) should be installed on a server as close to the TIBCO Spotfire Server as possible.
This is a Node.js application that creates a web socket server and an html page that shows the attempt to connect to that web socket server. This mimics the Spotfire behavior (except support for https) and is helpful to show if there is a general problem with websocket usage in the environment. Ensure node.js is installed and the ports 8080 and 8081 are open and accessible.
Instructions: 1. Extract the contents of the .zip file on the server machine (Spotfire Server or Node Manager) , then install the program using:
>npm start
This will start a web server at port 8080 and a web socket server on port 8081 (can be changed if needed)
2. Open a browser to the server (port 8080) where the app was installed
3. See that the connection status field turns green (WS-test.mp4)
4. Press send and see that the web socket server returns a valid response
5, Perform the same test using a client and connection where Spotfire fails to set up a web socket connection
If the test server fails to set up a websocket connection, then the issue is confirmed to be due to interference with the websocket protocol in the environment and investigation needs to continued by the end-user's IT or network team.
Diagram:
If either of these tests confirm that there is an issue with the use of websockets in the environment, then the end-user's IT or network team should continue the investigation. Specifically, the network devices (Load balancer / Reverse proxy / Firewall / etc) between Spotfire Server and end-user client machine should be investigated to ensure they are not interfering with the websockets protocol which is required for correct Spotfire operation.