websocket server for XPages runtime
Java Other
Latest commit ddddd75 Dec 14, 2016 @mwambler removed .VC.db file
Permalink
Failed to load latest commit information.
.recommenders latest tested build for release Dec 14, 2016
com.google.guice proxy enhancement, code cleanup Mar 9, 2016
com.jackson.library fix reload scripts to included intervaled scripts Sep 2, 2016
com.tc.di.guicer latest tested build for release Dec 14, 2016
com.tc.domino.module latest tested build for release Dec 14, 2016
com.tc.rest.client latest tested build for release Dec 14, 2016
com.tc.restful.security latest tested build for release Dec 14, 2016
com.tc.utils latest tested build for release Dec 14, 2016
com.tc.websocket.client latest tested build for release Dec 14, 2016
com.tc.websocket.feature added onlyText and onlyData flags to SocketMessage to limit data volu… Oct 25, 2016
com.tc.websocket.filter latest tested build for release Dec 14, 2016
com.tc.websocket.tests latest tested build for release Dec 14, 2016
com.tc.websocket.updatesite latest tested build for release Dec 14, 2016
com.tc.websocket latest tested build for release Dec 14, 2016
com.tc.xpage.profiler latest tested build for release Dec 14, 2016
imgscalr random updates Sep 21, 2016
io.netty fix reload scripts to included intervaled scripts Sep 2, 2016
org.apache.commons proxy enhancement, code cleanup Mar 9, 2016
xockets-dsapi removed .VC.db file Dec 14, 2016
xpage-applications latest tested build for release Dec 14, 2016
._.git added onlyText and onlyData flags to SocketMessage to limit data volu… Oct 25, 2016
._LICENSE added onlyText and onlyData flags to SocketMessage to limit data volu… Oct 25, 2016
.gitignore fixed gitignore Dec 14, 2016
LICENSE first commit for xockets.io Feb 5, 2016
NOTICE updated readme to include imgscalr libary reference Sep 21, 2016
README updated README Dec 14, 2016
xockets.io.setup.odt fixes show-scripts, reload-scripts, WEBSOCKET_MAX_MSG_SIZE for embedd… Apr 6, 2016
xockets.io.setup.pdf fixes show-scripts, reload-scripts, WEBSOCKET_MAX_MSG_SIZE for embedd… Apr 6, 2016

README

xockets.io (pronounced Zockets IO, for XPages websockets) plugin adds support for browser based websockets in the XPages runtime.  
It leverages Netty.io websocket libraries to easily scale to a large number of users.  This plugin replaces the websocket implementation 
found in the webshell-xpages-ext-lib.  Below is a list of the latest features available in xockets.io:


xockets.io as of 3.0.2
-New Features include:
	textOnly (e.g. msg.onlyText = true;) flag sends only the text portion of the message to the target recipient(s)
	dataOnly (e.g. msg.onlyData = true;) flag sends just the data portion of the message to the target recipient(s)
	both of the above flags help to limit the payload size to the targets by removing message meta data
	DSAPI plugin project for Visual Studio for a very specific use case handling certificate based authentication (windows only for now)
	
	
-Fixes:
	fix reload scripts to included intervaled scripts
	fixed null pointer in XocketsPhaseListener

	


xockets.io as of 3.0.1
-New Features include:
	A new event method to script against called onBeforeMessage (fires just before a message will be sent, used for filters, other validations)
	A new SocketMessage attribute called shortCircuit.  If set to true halts sending of message (for use with onBeforeMessage)
	Support for includes / use across multiple script libraries using for example:
		JavaScript external library refernces would be ///use lib1.ssjs, lib2.ssjs, lib3.ssjs
		Ruby's external references would be #///use lib1.rb, lib2.rb, lib3.rb
	Support for sharing application and session managed beans (note, only good for sharing state, do not try to perform notes operations)
	Additional utility objects are now available in script scope as well (e.b. b64Utils, strUtils, ioUtils, fileUtils etc)
	Group chat application will be available soon on OpenNTF that will demonstrate these new features.
	
-Fix:
	A new parameter to override the default character set when pulling in scripts (see WEBSOCKET_CHARSET=xxxx).
	
	
	
	
	

xockets.io as of 3.0.0
-New Features include:
	URI Listeners (replaced Rhino SocketEventListeners)
	"Intervaled" Scripts to fire on a specific interval
	Support for the following scripting runtimes (Groovy, JRuby, Jython, BeanShell, Agents(LS and Java), and Rhino's JavaScript)
-Fix:
	Routing a message to a user on a specific page has been restored.  Was broken in prior release (e.g. /chat.nsf/chat.xsp/CN=admin admin/OU=...)
	
-Breaking Changes Introduced:
	Refactor any scripts that registered via addSocketEventListener methods to use the new methods for URI Listeners (see chat.nsf sample)
	A file extension must be used with the ssjs or file design elements (e.g. logger.ssjs, or logger.py)
	

	
	
xockets.io as of 2.0.8
-New feature added to allow event observer scripts for all connected clients

xockets.io as of 2.0.7
-New feature added to allow a collection of messages to be sent in one call


xockets.io as of 2.0.6
-Fix applied for multiple targets in a message targeting URIs


xockets.io as of 2.0.5
-Updated the underlying Netty server to 4.1.1 due to security vulnerability in 4.1.0


xockets.io as of 2.0.4
-Fixed issue with IE11 disconnecting after 30 seconds of inactivity
-Updated underlying Netty server to the final release of 4.1.0
-Fixed issue with remove-script command not working from console


xockets.io as of 2.0.3
-Fixed embedded client's max message size.  It now uses the WEBSOCKET_MAX_MSG_SIZE value from the server
-Fixed reload-scripts and show-scripts command line call from the console (last release I had disabled / removed accidentally)
-Added enhancement to allow multiple targets in a SocketMessage.  New attribute introduced "targets".  Use instead of "to" field when sending to multiple
-Added enhancement to allow multiple websocket connections per user based on URI.


xockets.io as of 2.0.2
-Enhanced to accomodate a simple proxy to allow the websocket server and Domino http server to run off of one port
-Setup xockets.io to use Netty's tc-native SSL feature.  It uses OpenSSL to handle network encryption.  
I had to back-port the java code to 1.6 since and create a custom build.  
Currently the OpenSSL feature is windows only, Linux is supported, I just haven't had time to create the build.
-Code cleanup / refactoring

xockets.io as of 2.0.1
-Fixed a problem with the plugin importing to the designer client (indirect reference to unneeded plugin removed)
-Updated the logic for message durability to save an inbound message during the onMessage method instead of during the send.
-(NOT TESTED YET) Added native transport settings WEBSOCKET_NATIVE_TRANSPORT for Linux based systems only (reduces memory consumption and GC overhead)
-Refactored NettyTestClient to use main method invocation so the loaded websocket clients stay loaded throughout the entire test.
-Refactored some of the notes api java operations for performance (e.g. use unid instead of view lookup where possible)
-Updated Config object to be based off an interface for easier substitutions during testing.
-Updated some netty calls to reduce memory overhead and GC
-(NOT TESTED) Removed the XPage 9.0.1 plugin references.  This might allow the websocket plugin to function in 8.5.3



xockets.io as of 2.0.0
-Use of Netty as the websocket/networking engine
-Increased scale (tested locally with 15k websocket connections / users)
-Granular control of threading, send / receive buffers to tweak performance of the server
-Configuration can be stored in a profile document, or notes.ini (both use name/value pairs)
-You will no longer be restricted to using the server's Id.  Any Id can be configured to integrate with the Domino server
-Server.id password no longer has to be empty (websocket server initializes with trusted session, then reverts to configured userId)
-Rhino embedded JavaScript clients can be registered and run under their own Ids as well (e.g. chatapp user)
-Added Origin based security patch to prohibit Cross-Site Websocket Hijacking (CSWSH) (you must configure allowed Origins e.g. mysite.com, yoursite.com, oursite.com)
-Added security patch to make sure the logged in user has at least reader access to the nsf if the websocket url contains the nsf as part of its path. 
-Added LRU SystemCache reference available to your Rhino JavaScript libraries to share and persist data between SSJS library invocations (scoped to class, so be careful with your keys).


Please see xockets.io.setup.pdf for more detailed information