On Wed, Apr 4, 2012 at 4:05 PM, Fabio Mancinelli
<[email protected]> wrote:
> On Wed, Apr 4, 2012 at 3:02 PM, Jerome Velociter <[email protected]> 
> wrote:
>> Hi Fabio,
>>
>> This is cool. Couple remarks below
>>
>> On Tue, Apr 3, 2012 at 12:50 AM, Fabio Mancinelli
>> <[email protected]> wrote:
>>> Hi Everybody,
>>>
>>> as promised here it is a more detailed mail about the work I did on XWiki 
>>> chat.
>>>
>>> First of all I committed the code of the current prototype here:
>>> https://github.com/xwiki-contrib/xwiki-platform-chat
>>>
>>> Now some technical details:
>>>
>>> 1) The system uses an embedded Vysper XMPP server
>>> (http://mina.apache.org/vysper/) with the Multi User Chat extension.
>>>
>>> 2) The communication is done using the BOSH protocol
>>> (http://en.wikipedia.org/wiki/BOSH). The BOSH endpoint is in the
>>> application context path, which means that the BOSH servlet will
>>> receive all the cookies as the other servlets (important for
>>> authentication, see after)
>>
>> Why not directly go for WebSocket ?
>>
>> BOSH looks like a "patch" for something that wasn't supported by the
>> browsers up until recently, but support is here or close to here for
>> WebSocket now (see http://caniuse.com/websockets).
>> If you are interested you can look for example into Atmosphere for
>> cross-container websocket support :
>> https://github.com/jfarcand/atmosphere
>>
> The main problem is on the client side.
> Vysper has a module for supporting WebSockets.
> Strophe.js, which is the library that I am using right now, only supports 
> BOSH.
> They've been discussing for WebSockets support since some years but
> apparently they're not yet there.
>
> If you know of a Javascript XMPP library that supports websockets, we
> might switch to it.

OK I've found this: https://gist.github.com/739147 ; but indeed it's
probably better to wait or get pull'd official support.

Thanks for the details.

Jerome.

>
> -Fabio
>
>
>>>
>>> 3) The whole UI of the chat system is contained in the
>>> XWiki.XWikiChatSkin. I've setup some tricky XSL transformations for
>>> bundling all the needed resources into this skin (see
>>> https://github.com/xwiki-contrib/xwiki-platform-chat/blob/master/xwiki-platform-chat-ui/src/main/build/transformations/xwiki-chat-skin.xsl)
>>> The result is that all javascript files, VM overrides, and CSS files
>>> are added to the skin as properties.
>>>
>>> 4) The Javascript, VM overrides and templates are available as
>>> separate file in
>>> https://github.com/xwiki-contrib/xwiki-platform-chat/tree/master/xwiki-platform-chat-ui/src/main.
>>> In order to hack it I use https://github.com/xwiki/xwiki-debug-eclipse
>>> and make symbolic links through the Eclipse interface so that those
>>> resources are available as if they were on the file system.
>>>
>>> 5) The current authentication is dummy (see
>>> https://github.com/xwiki-contrib/xwiki-platform-chat/blob/master/xwiki-platform-chat-server/src/main/java/org/xwiki/chat/server/NullUserAuthorization.java)
>>> What is needed to do is to process the data coming from the cookies
>>> and use the XWiki authentication subsystem to check the credentials
>>> coming at the beginning of an XMPP session. This could be quite tricky
>>> and will need some work for modifying the BoshServlet in order to make
>>> these credentials available to the code that will need them.
>>>
>>> 6) When the page is loaded a connection is established and several
>>> chat rooms are automatically joined: wiki, space and page. This of
>>> course is temporary. The idea is that on page load the user will joing
>>> the chatroom for the current wiki, the current space and the current
>>> page, depending on what she is looking at. This means that there will
>>> potentially be a chat room for every page in the wiki, for every space
>>> and, in a multi-wiki environment, for every wiki. The number of users
>>> in these chatroom will depend on what the users are actually working
>>> on.
>>>
>>> 7) Chatrooms are left on page unload. This means that looking at the
>>> chatrooms population we might be able to understand how many users are
>>> currently connected and where.
>>>
>>> 8) Since XWiki has a feature for defining a social network (i.e.,
>>> following/followers) this data can be used to show in the chat the
>>> users that I am following that are online, so that I might be able to
>>> send them private messages.
>>>
>>> 9) Currently no the XMPP server is not backed by any storage, but it
>>> is possible to write a storage system that stores all the discussions
>>> in some wiki object (e.g., a page) so that a trace is kept.
>>>
>>> 10) The XMPP server also supports a Publish/Subscribe module. This
>>> could be used to implement a live notification system. But even
>>> without using pubsub, a special chatroom can be used to send these
>>> messages that will be displayed, for example, using a special UI à la
>>> growl (http://growl.info/screenshots) or equivalent.
>>
>> Could "Server-sent events" standards be of use for this feature ?
>>
>> See http://en.wikipedia.org/wiki/Server-sent_events
>>
>> That's all
>> Jerome
>>
>>>
>>> There is currently a limitation with the Vysper BOSH servlet... It
>>> seems that it doesn't like too much Tomcat which can be a problem. The
>>> thread where the problem is explained is here:
>>> http://mail-archives.apache.org/mod_mbox/tomcat-users/201201.mbox/%[email protected]%3E
>>>
>>> I haven't yet investigated the problem, but a possible solution (or a
>>> roadmap towards a solution) should be found as soon as possible
>>> because if we start to integrate the authorization system and the
>>> storage system, it would be difficult to port it to another system [1]
>>>
>>> I think that's all for the moment.
>>>
>>> Of course comments are welcome.
>>>
>>> -Fabio
>>>
>>> [1] I've looked at other XMPP servers, but I chose Vysper because it
>>> is part of a well established Apache project, it's very simple to use,
>>> supports all that we need (embeddable server, multi user chat, etc.)
>>> and has a quite active community. Other solutions were either GPLv3,
>>> or not showing a clear situation wrt the community and the features.
>>>
>>> On Sat, Mar 31, 2012 at 1:46 AM, Fabio Mancinelli
>>> <[email protected]> wrote:
>>>> Hi everybody,
>>>>
>>>> one of the research projects we are involved in is about realtime
>>>> collaboration. One of the aspects we wanted to investigate was the
>>>> integration of a chat system within XWiki.
>>>> I've been working on this lately and I've built a prototype that uses
>>>> an embedded XMPP server for handling all the communication.
>>>>
>>>> I still have to cleanup a bit the code before committing it, but I
>>>> took a video of how things work.
>>>> You can find it here: http://youtu.be/0Gwtpu3iVwo (it's FullHD, so
>>>> make sure to change the video quality and to switch to fullscreen)
>>>>
>>>> There are several things we need to address (authentication is one of
>>>> them), but I think we could have a functional extension pretty soon.
>>>>
>>>> It's 1:30am right now, so I will give you more details in a next mail :)
>>>>
>>>> Enjoy.
>>>>
>>>> Thanks,
>>>> Fabio
>>> _______________________________________________
>>> devs mailing list
>>> [email protected]
>>> http://lists.xwiki.org/mailman/listinfo/devs
>>
>>
>> --
>> Jérôme Velociter
>> Winesquare
>> http://www.winesquare.net/
>> _______________________________________________
>> devs mailing list
>> [email protected]
>> http://lists.xwiki.org/mailman/listinfo/devs
> _______________________________________________
> devs mailing list
> [email protected]
> http://lists.xwiki.org/mailman/listinfo/devs



-- 
Jérôme Velociter
Winesquare
http://www.winesquare.net/
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to