Expand my Community achievements bar.

Dive into Adobe Summit 2024! Explore curated list of AEM sessions & labs, register, connect with experts, ask questions, engage, and share insights. Don't miss the excitement.
SOLVED

Network Disonnection Messaging

Avatar

Level 1

Hi there ,

We have a project and we need the data to be pushed across differnet flex clients.


we have been facing issues related to network disconnectios. The Consumer component seems to be  working only in some cases.

but in certain cases it's not getting reconnected . we have used the resubscribe attempts set to -1 and resubscribe interval set to 1000 on the consumer.


A little help is required ASAP.

Thanks and Regards,

Kanthi.

1 Accepted Solution

Avatar

Correct answer by
Former Community Member

Kanthi,

In 3) I should have included a firewall. Is RTMP going through a firewall?

Have you defined resubsribeAttempts or resubsribeInterval properties?

How big are the data messages in your use case?

How about adding filter patterns for logging Endpoint.RTMP, Protocol.RTMP, ... in services-config.xml?

    <logging>

        <target class="flex.messaging.log.ConsoleTarget" level="Debug">

            <properties>

                <prefix>[LCDS] </prefix>

                <includeDate>false</includeDate>

                <includeTime>false</includeTime>

                <includeLevel>false</includeLevel>

                <includeCategory>false</includeCategory>

            </properties>

            <filters>

                <pattern>Endpoint.*</pattern>

                <pattern>Service.*</pattern>

                <pattern>Configuration</pattern>

                <pattern>SocketServer.*</pattern>

            </filters>

        </target>

    </logging>

Steve

View solution in original post

6 Replies

Avatar

Former Community Member

1) Are you using a channel set?

2) Which primary and secondary channels are you using?

3) Do you have a proxy, load balancer, or router in your network?

Steve

Avatar

Level 1

1) No , We are not using any channel set at the client side.

2) We used two channels. The primary channel is RTMP and the other channel is NIO AMF with streaming.

3) We have not implemented any proxy or load balancer , we do have a router.

At the server side we have implemented the MessageClientListener , so that we can listent when the message client is destroyed.

Awaiting your reply.

Thanks and Regards,

Kanthi.

Avatar

Level 1

Hi Steve ,

Thank you for your reply. We have implemented the channel set in out project but we found no use.

                    channelSet = new ChannelSet();
                
                  rtmpChannel = RTMPChannel(ServerConfig.getChannel('my-rtmp'));
                  channelSet.addChannel(rtmpChannel);
                
                 amfLongPoll = AMFChannel(ServerConfig.getChannel('my-nio-amf-longpoll'));
                 amfLongPoll.pollingInterval = 3000;
                 channelSet.addChannel(amfLongPoll);
                
                 amfStream = StreamingAMFChannel(ServerConfig.getChannel("my-nio-amf-stream"));
                 amfStream.connectTimeout = 3;
                 channelSet.addChannel(amfStream);
                
                
                 amfPoll = AMFChannel(ServerConfig.getChannel("my-nio-amf-poll"));
                 channelSet.addChannel(amfPoll);
                
                 nioHttpStream = StreamingHTTPChannel(ServerConfig.getChannel("my-nio-http-stream"));
                 nioHttpStream.connectTimeout = 3;
                 channelSet.addChannel(nioHttpStream);
                
                 nioHttpLongPoll = HTTPChannel(ServerConfig.getChannel('my-nio-http-longpoll'));
                 nioHttpLongPoll.pollingInterval = 3000;
                   channelSet.addChannel(nioHttpLongPoll);
                
                 nioHttpPoll = HTTPChannel(ServerConfig.getChannel("my-nio-http-poll"));
                 channelSet.addChannel(nioHttpPoll);

this is how we have created the channel set and finally assigned the channel set to the consumer and producers' channelSet.

In a way to diagnose the network disconnection and reconnections we have implemented the consumer's ChannelEvent.

The Channel connection event is fired only initially but not after the net reconnection.

Thanks and Regards,

Kanthi.

Avatar

Correct answer by
Former Community Member

Kanthi,

In 3) I should have included a firewall. Is RTMP going through a firewall?

Have you defined resubsribeAttempts or resubsribeInterval properties?

How big are the data messages in your use case?

How about adding filter patterns for logging Endpoint.RTMP, Protocol.RTMP, ... in services-config.xml?

    <logging>

        <target class="flex.messaging.log.ConsoleTarget" level="Debug">

            <properties>

                <prefix>[LCDS] </prefix>

                <includeDate>false</includeDate>

                <includeTime>false</includeTime>

                <includeLevel>false</includeLevel>

                <includeCategory>false</includeCategory>

            </properties>

            <filters>

                <pattern>Endpoint.*</pattern>

                <pattern>Service.*</pattern>

                <pattern>Configuration</pattern>

                <pattern>SocketServer.*</pattern>

            </filters>

        </target>

    </logging>

Steve

Avatar

Level 1

Steve,

We do have a firewall on the machine from where the server runs. The resubscribeAttempts is set to -1 and resubscribeInterval is set to 5*1000

The project is very lively one , though the data in our use case on a maximum is about 16KB.

Avatar

Level 1

Steve,

Hi , this is to say that using channel set has solved the network issues that we used face earlier.

Thanks and Regards,

Kanthi.

The following has evaluated to null or missing: ==> liqladmin("SELECT id, value FROM metrics WHERE id = 'net_accepted_solutions' and user.id = '${acceptedAnswer.author.id}'").data.items [in template "analytics-container" at line 83, column 41] ---- Tip: It's the step after the last dot that caused this error, not those before it. ---- Tip: If the failing expression is known to be legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign answerAuthorNetSolutions = li... [in template "analytics-container" at line 83, column 5] ----