Tigase XMPP Server Board

API and development: RE: Offline message count

Fri, 06/17/2016 - 08:24

Hi,

I tell you what I did to achieve the offline message count. We needed to send in the push message to mobile devices the offline messages count, only for iOS in order to show it in the app icon.
I have a plugin responsible for listening all the incoming messages, and if the recipient is offline it starts my push message service and before that with an adhoc query it counts in the database the offline messages.
In my analysis that was the best option, maybe someone has a better idea.

Regards.

Categories: Tigase Forums

API and development: Offline message count

Fri, 06/17/2016 - 02:54

Hi all,

In tigase is it possible to get the offline message count for a user. Also get the unread message count.

Is there any way i can implement this from the server end.

Thanks

Categories: Tigase Forums

API and development: Reducing packet payload

Thu, 06/16/2016 - 21:21

Hi there,
Thanks to all the community that develops Tigase products.

We needed to improve the negotiation process of the users at the authentication. We developed a new authentication method to reduce the C2S round trip messages to 2 without SSL with SM and Resume enabled. So, now we are in a average of 1.5 seconds in the auth process (talking about new connections, not resumed connections that is really fast) on a stable wifi or a good 4G network.
The thing is that in a mobile network environment with 3G or even poorer networks, the app takes too much time to connect and the user experience is not working really because the message appears on the conversation screen sometimes with a delay of more than 10 seconds.

So, I started thinking about the possibility of reducing the the in/out packets payload by replacing the most common words like: "message, presence, from, type, xmlns, body, chat, stream, auth... etc" into codes of 1 or 2 bytes.
Tigase should format the original stanza into this conversion before sending the message to the socket, and the client apps must traduce the codes once the packet arrives.

In your opinion:
Do you think this is more efficient than compressing with zlib?
How big would be the impact for the Tigase Server Core?
Which would be the steps to achieve this?

Thanks in advance!

Categories: Tigase Forums

API and development: RE: XEP-0071 problem

Wed, 06/08/2016 - 07:48

Which Tigase version do you use? There was a known problem in older Tigase version causing such problem. Please try latest 7.1.0 nightly which should contain the fix.

Categories: Tigase Forums

Installation and maintenance: RE: Connection Issue with Websocket

Wed, 06/08/2016 - 07:46

Can you try reproducing this in the latest 7.1.0 version of the Tigase?

Categories: Tigase Forums

API and development: RE: From where can we detect when a user goes offline/closes the connection.

Wed, 06/08/2016 - 07:42

There is a connection Watchdog functionality which periodically checks user connections whether they are still open and valid.

Categories: Tigase Forums

API and development: RE: Tigase Clustering on Amazon Elastic Beanstalk (EBS)

Wed, 06/08/2016 - 07:39

Well, we have no experience with this particular Amazon service. We can confirm that Tigase works well with typical EC2 instances.

Categories: Tigase Forums

Installation and maintenance: RE: jingle protocol support

Wed, 06/08/2016 - 07:34

First of all - please avoid bumping the threads - there is absolutely no need for it!

As for the issue at hand - can you append following JVM property -Djava.net.preferIPv4Stack=true to the JAVA startup parameter list and check if that worked for you?

Categories: Tigase Forums

API and development: XEP-0071 problem

Tue, 06/07/2016 - 23:33

Hi,guys!
I am sending a message with XHTML,but tigase parse the message cause content loss.
For example(which from XEP-0071 chapter9,example 2):

<message> <body>Wow, I&apos;m green with envy!</body> <html xmlns='http://jabber.org/protocol/xhtml-im'> <body xmlns='http://www.w3.org/1999/xhtml'> <p style='font-size:large'> <em>Wow</em>, I&apos;m <span style='color:green'>green</span> with <strong>envy</strong>! </p> </body> </html> </message>
when parse finished,the "P" element has 3 children elements,but the content ", I'm" and "with" is missing,only left the last character '!'.
could you help me to solve this problem,thanks very much.
Categories: Tigase Forums

Installation and maintenance: Connection Issue with Websocket

Tue, 06/07/2016 - 04:58

We are implementing webchat utilising Strophe.js + Tigase 7.0.0 over WebSocket. Things working perfectly in most of the cases, but when we logout and login immediately, sometimes after successful login stream_close is triggered from below piece of code in ClientConnectionManager.java and kicked out of web socket session. Can you advise on this?

....
Packet command = Command.STREAM_CLOSED_UPDATE.getPacket(packet.getStanzaTo(),
packet.getPacketFrom(), StanzaType.set, UUID.randomUUID().toString());
.....
.....
if (log.isLoggable(Level.FINE)) {
log.log(Level.FINE,
"Sending a command to close the remote session for non-existen {0} connection: {1}",
new Object[] { getName(),
command.toStringSecure() });
}
Categories: Tigase Forums

API and development: RE: Custom plugin for nats push

Tue, 06/07/2016 - 01:54

In this case I think you should used similar workflow as MessageArchiving component is using. MessageArchivingPlugin forwards packets to store to MessageArchivingComponent which stores them to database - in your case you would send them over nats connections.

Categories: Tigase Forums

API and development: RE: Custom plugin for nats push

Mon, 06/06/2016 - 22:56

If the nats connection is not availiable or slow then it causes a delay in the chat message delivery as well... is there a way to run a component which does not affect the chat message delivery and does the nats publish job independently.
That is when chat messages are sent a component will queue and publish the nats message but the actual chat messages will be delivered normally.

I am using this for the pubsub(as group chat) where most of the users will be offline, and the online uses will receive the chat message after a delay depending on the number of users in the group.

hope this clarifies what i meant.

Thanks

Categories: Tigase Forums

API and development: RE: Custom plugin for nats push

Mon, 06/06/2016 - 04:40

It is hard to tell if you approach is correct as I do not know what and how you actually do. Could you clarify what produces delay and what throws timeout exception?

Categories: Tigase Forums

API and development: Custom plugin for nats push

Fri, 06/03/2016 - 08:09

Hi,

I have a custom plugin which is used for publishing the nats messages for each message sent if the to user is offline...The messages are sent properly but i produces a delay in the message sent and eventually causes a timeout exception...

I need to restart the server for it to continue working

I am not sure whether my approach to this is proper or not. If it is not a proper way to do this the how can i achieve it...

Any suggestion...
Thank you

Categories: Tigase Forums

API and development: From where can we detect when a user goes offline/closes the connection.

Fri, 06/03/2016 - 06:12

Aside from listening to an unavailable packet, is there an event to listen to, or perhaps a plugin to override so that we can detect when a user goes offline server side?

Categories: Tigase Forums

API and development: RE: MissingPropertyException

Thu, 06/02/2016 - 05:23

Hi,

please remove following file /home/ec2-user/tigase-server-7.0.4-b3844/scripts/rest/stream/Stream.groovy
I know this file is part of package of Tigase XMPP Server 7.0.4, however it was added to this package by mistake. This file is designed to work only in Tigase XMPP Server 7.1.0 or newer as it requires Tigase HTTP API 1.2.0.

Categories: Tigase Forums

API and development: Tigase Clustering on Amazon Elastic Beanstalk (EBS)

Wed, 06/01/2016 - 04:04

Hi,

We have decided to use Amazon Elastic Beanstalk (EBS) for tigase server to handle load balancing. Is it possible to do clustering with EBS? if so could you show me where to begin, also the best configuration for EBS as well.

Thank you :)

Categories: Tigase Forums

API and development: RE: Create an admin user

Wed, 06/01/2016 - 03:29

Currently there is no way to change admin list without restarting the server.

Categories: Tigase Forums

API and development: MissingPropertyException

Wed, 06/01/2016 - 03:22

Hi,

I am getting the following exception while running the latest tigase server

java_util_logging_Logger$log.call() SEVERE: Exception loading handler from script = /home/ec2-user/tigase-server-7.0.4-b3844/scripts/rest/stream/Stream.groovy
groovy.lang.MissingPropertyException: No such property: description for class: rest.stream.Stream
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:50)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.setGroovyObjectProperty(ScriptBytecodeAdapter.java:530)
at rest.stream.Stream.<init>(Stream.groovy:43)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:77)
at org.codehaus.groovy.reflection.CachedConstructor.doConstructorInvoke(CachedConstructor.java:71)
at groovy.lang.MetaClassImpl.invokeConstructor(MetaClassImpl.java:1536)
at groovy.lang.MetaClassImpl.invokeConstructor(MetaClassImpl.java:1404)
at org.codehaus.groovy.runtime.InvokerHelper.invokeConstructorOf(InvokerHelper.java:879)
at org.codehaus.groovy.runtime.DefaultGroovyMethods.newInstance(DefaultGroovyMethods.java:11892)
at org.codehaus.groovy.runtime.dgm$369.invoke(Unknown Source)
at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite$StaticMetaMethodSiteNoUnwrapNoCoerce.invoke(StaticMetaMethodSite.java:148)
at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.call(StaticMetaMethodSite.java:88)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.call(StaticMetaMethodSite.java:93)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:112)
at tigase.http.rest.HandlersLoader.loadHandler(HandlersLoader.groovy:41)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:361)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:909)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:66)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:145)
at tigase.http.rest.HandlersLoader$_loadHandlers_closure1.doCall(HandlersLoader.groovy:54)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:272)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:909)
at groovy.lang.Closure.call(Closure.java:411)
at groovy.lang.Closure.call(Closure.java:427)
at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:1326)
at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:1298)
at org.codehaus.groovy.runtime.dgm$148.invoke(Unknown Source)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoMetaMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:271)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:53)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
at tigase.http.rest.HandlersLoader.loadHandlers(HandlersLoader.groovy:51)
at tigase.http.rest.HandlersLoader$loadHandlers.call(Unknown Source)
at tigase.http.rest.RestServlet.loadHandlers(RestServlet.groovy:65)
at tigase.http.rest.RestExtServlet.super$4$loadHandlers(RestExtServlet.groovy)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1085)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuperN(ScriptBytecodeAdapter.java:128)
at tigase.http.rest.RestExtServlet.loadHandlers(RestExtServlet.groovy:43)
at tigase.http.rest.RestExtServlet$loadHandlers.callCurrent(Unknown Source)
at tigase.http.rest.RestServlet.init(RestServlet.groovy:60)
at javax.servlet.GenericServlet.init(GenericServlet.java:244)
at tigase.http.java.RequestHandler.registerServlet(RequestHandler.java:94)
at tigase.http.java.RequestHandler.<init>(RequestHandler.java:59)
at tigase.http.java.JavaStandaloneHttpServer.deploy(JavaStandaloneHttpServer.java:98)
at tigase.http.java.JavaStandaloneHttpServer.deploy(JavaStandaloneHttpServer.java:77)
at tigase.http.HttpServer.deploy(HttpServer.java:99)
at tigase.http.rest.RestModule.start(RestModule.java:112)
at tigase.http.HttpMessageReceiver.setProperties(HttpMessageReceiver.java:237)
at tigase.conf.ConfiguratorAbstract.setup(ConfiguratorAbstract.java:540)
at tigase.conf.ConfiguratorAbstract.componentAdded(ConfiguratorAbstract.java:177)
at tigase.conf.Configurator.componentAdded(Configurator.java:50)
at tigase.conf.Configurator.componentAdded(Configurator.java:33)
at tigase.server.AbstractComponentRegistrator.addComponent(AbstractComponentRegistrator.java:116)
at tigase.server.MessageRouter.addComponent(MessageRouter.java:108)
at tigase.server.MessageRouter.addRouter(MessageRouter.java:145)
at tigase.server.MessageRouter.setProperties(MessageRouter.java:704)
at tigase.conf.ConfiguratorAbstract.setup(ConfiguratorAbstract.java:540)
at tigase.conf.ConfiguratorAbstract.componentAdded(ConfiguratorAbstract.java:177)
at tigase.conf.Configurator.componentAdded(Configurator.java:50)
at tigase.conf.Configurator.componentAdded(Configurator.java:33)
at tigase.server.AbstractComponentRegistrator.addComponent(AbstractComponentRegistrator.java:116)
at tigase.server.MessageRouter.addRegistrator(MessageRouter.java:131)
at tigase.server.MessageRouter.setConfig(MessageRouter.java:603)
at tigase.server.XMPPServer.start(XMPPServer.java:142)
at tigase.server.XMPPServer.main(XMPPServer.java:112)

Tigase version : tigase-server-7.0.4-b3844

Please help.
Thank you

Categories: Tigase Forums

API and development: RE: Create an admin user

Tue, 05/31/2016 - 22:12

Thanks for the reply.

If I add admin entries to the init.properties does it require to restart the server. if so is there any way to do it without a restarting the server?

Categories: Tigase Forums

Pages

Get in touch

We provide software products, consulting and custom development services

Tigase, Inc.
100 Pine Street, Suite 1250
San Francisco, CA 94111, USA
Phone: (415) 315 9771

Follow us on:

Twitter

Back to Top