The Lightstreamer Basic Chat Demo is a very simple chat application, based on Lightstreamer for its real-time communication needs.
This project contains the source code and all the resources needed to deploy on a Node.js instance the Node.js port of the Lightstreamer - Basic Chat Demo - Java Adapter.
As an example of a client using this adapter, you may refer to the Basic Chat Demo - HTML Client and view the corresponding Live Demo.
This project shows the use of DataProvider and MetadataProvider classes provided in the Lightstreamer SDK for Node Adapters. For more details, see Node.js Interfaces in Lightstreamer - "Hello World" Tutorial - Node.js Adapter
The project consists of two JavaScript source files:
nodechat.js
, contains the code for the Chat Data and Metadata Adapter;robustconnect.js
, manages the connection to the Proxy Adapter.
This Adapter Set is configured and will be referenced by the clients as PROXY_NODECHAT
.
As Proxy Data Adapter and Proxy MetaData Adapter, you may configure also the robust versions. The Robust Proxy Data Adapter and Robust Proxy MetaData Adapter have some recovery capabilities and avoid to terminate the Lightstreamer Server process, so it can handle the case in which a Remote Data Adapter is missing or fails, by suspending the data flow and trying to connect to a new Remote Data Adapter instance. Full details on the recovery behavior of the Robust Data Adapter are available as inline comments within the DOCS-SDKs/adapter_remoting_infrastructure/doc/adapter_robust_conf_template/adapters.xml
file in your Lightstreamer Server installation.
The adapters.xml
file for this demo should look like:
<?xml version="1.0"?>
<adapters_conf id="PROXY_NODECHAT">
<metadata_provider>
<adapter_class>ROBUST_PROXY_FOR_REMOTE_ADAPTER</adapter_class>
<classloader>log-enabled</classloader>
<param name="request_reply_port">8003</param>
<param name="timeout">36000000</param>
</metadata_provider>
<data_provider name="CHAT_ROOM">
<adapter_class>ROBUST_PROXY_FOR_REMOTE_ADAPTER</adapter_class>
<classloader>log-enabled</classloader>
<param name="request_reply_port">8001</param>
<param name="notify_port">8002</param>
<param name="timeout">36000000</param>
</data_provider>
</adapters_conf>
NOTE: not all configuration options of a Proxy Adapter are exposed by the file suggested above. You can easily expand your configurations using the generic template, DOCS-SDKs/adapter_remoting_infrastructure/doc/adapter_conf_template/adapters.xml or DOCS-SDKs/adapter_remoting_infrastructure/doc/adapter_robust_conf_template/adapters.xml, as a reference.
If you want to install a version of this demo in your local Lightstreamer Server, follow these steps:
- Download Lightstreamer Server (Lightstreamer Server comes with a free non-expiring demo license for 20 connected users) from Lightstreamer Download page, and install it, as explained in the
GETTING_STARTED.TXT
file in the installation home directory. - Get the
deploy.zip
file for the Lightstreamer version you have installed from releases and unzip it, obtaining thedeployment
folder. - Plug the Proxy Data Adapter into the Server: go to the
deployment/Deployment_LS
folder and copy theChatAdapterNode
directory and all of its files to theadapters
folder of your Lightstreamer Server installation. - Alternatively, you may plug the robust versions of the Proxy Data Adapter: go to the
deployment/Deployment_LS(robust)
folder and copy theChatAdapterNode
directory and all of its files into theadapters
folder. - Install the lightstreamer-adapter module.
- Create a directory where to deploy the Node.js Remote Adapter and let call it
Deployment_Node_Remote_Adapter
. - Go to the
Deployment_Node_Remote_Adapter
folder and launch the command:
> npm install lightstreamer-adapter
- Download the
nodechat.js
and therobustconnect.js
files from this project and copy them into theDeployment_Node_Remote_Adapter
folder.
- Create a directory where to deploy the Node.js Remote Adapter and let call it
- Launch Lightstreamer Server. The Server startup will complete only after a successful connection between the Proxy Data Adapter and the Remote Data Adapter.
- Launch the Node.js Remote Adapter: go to the
Deployment_Node_Remote_Adapter
folder and launch:
> node nodechat.js
- Test the Adapter, launching the Lightstreamer - Basic Chat Demo - HTML Client listed in Clients Using This Adapter.
- To make the Lightstreamer - Basic Chat Demo - HTML Client front-end pages get data from the newly installed Adapter Set, you need to modify the front-end pages and set the required Adapter Set name to PROXY_NODECHAT when creating the LightstreamerClient instance. So edit the
lsClient.js
file of the Basic Chat Demo front-end deployed underLightstreamer/pages/ChatDemo
and replace:
var lsClient = new LightstreamerClient(protocolToUse+"//localhost:"+portToUse,"CHAT");
with:
var lsClient = new LightstreamerClient(protocolToUse+"//localhost:"+portToUse,"PROXY_NODECHAT");
(you don't need to reconfigure the Data Adapter name, as it is the same in both Adapter Sets). - As the referred Adapter Set has changed, make sure that the front-end no longer shares the Engine with other demos.
So a line like this:
lsClient.connectionSharing.enableSharing("ChatDemoCommonConnection", "ATTACH", "CREATE");
should become like this:
lsClient.connectionSharing.enableSharing("RemoteChatDemoConnection", "ATTACH", "CREATE");
- Open a browser window and go to: http://localhost:8080/ChatDemo
- To make the Lightstreamer - Basic Chat Demo - HTML Client front-end pages get data from the newly installed Adapter Set, you need to modify the front-end pages and set the required Adapter Set name to PROXY_NODECHAT when creating the LightstreamerClient instance. So edit the
- Lightstreamer - Basic Chat Demo - Java Adapter
- Lightstreamer - "Hello World" Tutorial - Node.js Adapter
- Compatible with Lightstreamer SDK for Node.js Adapters since 1.3
- For a version of this example compatible with Lightstreamer SDK for Node.js Adapters version 1.0, please refer to this tag.