Netty communicating to a server every 10 seconds
I am trying to build a thread from a client that will communicate to the server and request a SHA-1 string from it every 10 seconds lets say. I want this thread for example to run in the background of the program I am making and check every 10 seconds whether the SHA-1 string it gets from the server is the same as the one stored locally in the client's machine.
As a beginner I've covered some Netty tutorials, but I can't wrap my head around how to create a connection from the client that sends a specific message to the server every x seconds. Do I have to configure the client (create a new EvenLoopGroup, initChannel evey 10 secs) or should I have the ClientHandler extend as a TimerTask (or thread)? Should I create 2 client connections, one for the background thread and one for the main program and each one of them to have different handlers? How can the server differentiate whether a message received is from the background thread or the main client program and perform differently?
Any help is appreciated, or you could just point me to more advanced tutorials if available.
netty
add a comment |
I am trying to build a thread from a client that will communicate to the server and request a SHA-1 string from it every 10 seconds lets say. I want this thread for example to run in the background of the program I am making and check every 10 seconds whether the SHA-1 string it gets from the server is the same as the one stored locally in the client's machine.
As a beginner I've covered some Netty tutorials, but I can't wrap my head around how to create a connection from the client that sends a specific message to the server every x seconds. Do I have to configure the client (create a new EvenLoopGroup, initChannel evey 10 secs) or should I have the ClientHandler extend as a TimerTask (or thread)? Should I create 2 client connections, one for the background thread and one for the main program and each one of them to have different handlers? How can the server differentiate whether a message received is from the background thread or the main client program and perform differently?
Any help is appreciated, or you could just point me to more advanced tutorials if available.
netty
add a comment |
I am trying to build a thread from a client that will communicate to the server and request a SHA-1 string from it every 10 seconds lets say. I want this thread for example to run in the background of the program I am making and check every 10 seconds whether the SHA-1 string it gets from the server is the same as the one stored locally in the client's machine.
As a beginner I've covered some Netty tutorials, but I can't wrap my head around how to create a connection from the client that sends a specific message to the server every x seconds. Do I have to configure the client (create a new EvenLoopGroup, initChannel evey 10 secs) or should I have the ClientHandler extend as a TimerTask (or thread)? Should I create 2 client connections, one for the background thread and one for the main program and each one of them to have different handlers? How can the server differentiate whether a message received is from the background thread or the main client program and perform differently?
Any help is appreciated, or you could just point me to more advanced tutorials if available.
netty
I am trying to build a thread from a client that will communicate to the server and request a SHA-1 string from it every 10 seconds lets say. I want this thread for example to run in the background of the program I am making and check every 10 seconds whether the SHA-1 string it gets from the server is the same as the one stored locally in the client's machine.
As a beginner I've covered some Netty tutorials, but I can't wrap my head around how to create a connection from the client that sends a specific message to the server every x seconds. Do I have to configure the client (create a new EvenLoopGroup, initChannel evey 10 secs) or should I have the ClientHandler extend as a TimerTask (or thread)? Should I create 2 client connections, one for the background thread and one for the main program and each one of them to have different handlers? How can the server differentiate whether a message received is from the background thread or the main client program and perform differently?
Any help is appreciated, or you could just point me to more advanced tutorials if available.
netty
netty
asked Nov 20 '18 at 17:21
Urist JoyceUrist Joyce
31
31
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
You can use the client channel's eventloop to schedule tasks and use the client context/channel to send the request for the SHA-1 string:
public static void scheduleFixedViaEventLoop() {
Channel ch = CHANNEL_OF_THE_CLIENT_SOMEWHERE; // get reference from somewhere
ScheduledFuture<?> future = ch.eventLoop().scheduleAtFixedRate(
new Runnable() {
@Override
public void run() {
ch.writeAndFlush(THE_REQUEST);
}
}, 10, 10, TimeUnit.SECONDS);
}
You can add this code after bootstrapping the client. You need to verify the response in the Inbound handler for the client--for this you need to be able to differentiate the response for this particular request from the other responses.
Ok so suppose I use this code on my ClientHandler, the event loop you talk about is it the piece of code on my Client class or its handler? And if I go to my Server's handler I could for example filter out the different requests by checking different types of messages? For example, one method in the ServerHandler could run an if loop that checks the msg input for example and perform a different operation. Can I do the last part somehow? Can I set a client to throw a specific message to the server?
– Urist Joyce
Nov 20 '18 at 21:10
you need an if statement to differentiate the messages of course.
– Riyafa Abdul Hameed
Nov 21 '18 at 3:00
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53398295%2fnetty-communicating-to-a-server-every-10-seconds%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
You can use the client channel's eventloop to schedule tasks and use the client context/channel to send the request for the SHA-1 string:
public static void scheduleFixedViaEventLoop() {
Channel ch = CHANNEL_OF_THE_CLIENT_SOMEWHERE; // get reference from somewhere
ScheduledFuture<?> future = ch.eventLoop().scheduleAtFixedRate(
new Runnable() {
@Override
public void run() {
ch.writeAndFlush(THE_REQUEST);
}
}, 10, 10, TimeUnit.SECONDS);
}
You can add this code after bootstrapping the client. You need to verify the response in the Inbound handler for the client--for this you need to be able to differentiate the response for this particular request from the other responses.
Ok so suppose I use this code on my ClientHandler, the event loop you talk about is it the piece of code on my Client class or its handler? And if I go to my Server's handler I could for example filter out the different requests by checking different types of messages? For example, one method in the ServerHandler could run an if loop that checks the msg input for example and perform a different operation. Can I do the last part somehow? Can I set a client to throw a specific message to the server?
– Urist Joyce
Nov 20 '18 at 21:10
you need an if statement to differentiate the messages of course.
– Riyafa Abdul Hameed
Nov 21 '18 at 3:00
add a comment |
You can use the client channel's eventloop to schedule tasks and use the client context/channel to send the request for the SHA-1 string:
public static void scheduleFixedViaEventLoop() {
Channel ch = CHANNEL_OF_THE_CLIENT_SOMEWHERE; // get reference from somewhere
ScheduledFuture<?> future = ch.eventLoop().scheduleAtFixedRate(
new Runnable() {
@Override
public void run() {
ch.writeAndFlush(THE_REQUEST);
}
}, 10, 10, TimeUnit.SECONDS);
}
You can add this code after bootstrapping the client. You need to verify the response in the Inbound handler for the client--for this you need to be able to differentiate the response for this particular request from the other responses.
Ok so suppose I use this code on my ClientHandler, the event loop you talk about is it the piece of code on my Client class or its handler? And if I go to my Server's handler I could for example filter out the different requests by checking different types of messages? For example, one method in the ServerHandler could run an if loop that checks the msg input for example and perform a different operation. Can I do the last part somehow? Can I set a client to throw a specific message to the server?
– Urist Joyce
Nov 20 '18 at 21:10
you need an if statement to differentiate the messages of course.
– Riyafa Abdul Hameed
Nov 21 '18 at 3:00
add a comment |
You can use the client channel's eventloop to schedule tasks and use the client context/channel to send the request for the SHA-1 string:
public static void scheduleFixedViaEventLoop() {
Channel ch = CHANNEL_OF_THE_CLIENT_SOMEWHERE; // get reference from somewhere
ScheduledFuture<?> future = ch.eventLoop().scheduleAtFixedRate(
new Runnable() {
@Override
public void run() {
ch.writeAndFlush(THE_REQUEST);
}
}, 10, 10, TimeUnit.SECONDS);
}
You can add this code after bootstrapping the client. You need to verify the response in the Inbound handler for the client--for this you need to be able to differentiate the response for this particular request from the other responses.
You can use the client channel's eventloop to schedule tasks and use the client context/channel to send the request for the SHA-1 string:
public static void scheduleFixedViaEventLoop() {
Channel ch = CHANNEL_OF_THE_CLIENT_SOMEWHERE; // get reference from somewhere
ScheduledFuture<?> future = ch.eventLoop().scheduleAtFixedRate(
new Runnable() {
@Override
public void run() {
ch.writeAndFlush(THE_REQUEST);
}
}, 10, 10, TimeUnit.SECONDS);
}
You can add this code after bootstrapping the client. You need to verify the response in the Inbound handler for the client--for this you need to be able to differentiate the response for this particular request from the other responses.
answered Nov 20 '18 at 17:50
Riyafa Abdul HameedRiyafa Abdul Hameed
2,57622633
2,57622633
Ok so suppose I use this code on my ClientHandler, the event loop you talk about is it the piece of code on my Client class or its handler? And if I go to my Server's handler I could for example filter out the different requests by checking different types of messages? For example, one method in the ServerHandler could run an if loop that checks the msg input for example and perform a different operation. Can I do the last part somehow? Can I set a client to throw a specific message to the server?
– Urist Joyce
Nov 20 '18 at 21:10
you need an if statement to differentiate the messages of course.
– Riyafa Abdul Hameed
Nov 21 '18 at 3:00
add a comment |
Ok so suppose I use this code on my ClientHandler, the event loop you talk about is it the piece of code on my Client class or its handler? And if I go to my Server's handler I could for example filter out the different requests by checking different types of messages? For example, one method in the ServerHandler could run an if loop that checks the msg input for example and perform a different operation. Can I do the last part somehow? Can I set a client to throw a specific message to the server?
– Urist Joyce
Nov 20 '18 at 21:10
you need an if statement to differentiate the messages of course.
– Riyafa Abdul Hameed
Nov 21 '18 at 3:00
Ok so suppose I use this code on my ClientHandler, the event loop you talk about is it the piece of code on my Client class or its handler? And if I go to my Server's handler I could for example filter out the different requests by checking different types of messages? For example, one method in the ServerHandler could run an if loop that checks the msg input for example and perform a different operation. Can I do the last part somehow? Can I set a client to throw a specific message to the server?
– Urist Joyce
Nov 20 '18 at 21:10
Ok so suppose I use this code on my ClientHandler, the event loop you talk about is it the piece of code on my Client class or its handler? And if I go to my Server's handler I could for example filter out the different requests by checking different types of messages? For example, one method in the ServerHandler could run an if loop that checks the msg input for example and perform a different operation. Can I do the last part somehow? Can I set a client to throw a specific message to the server?
– Urist Joyce
Nov 20 '18 at 21:10
you need an if statement to differentiate the messages of course.
– Riyafa Abdul Hameed
Nov 21 '18 at 3:00
you need an if statement to differentiate the messages of course.
– Riyafa Abdul Hameed
Nov 21 '18 at 3:00
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53398295%2fnetty-communicating-to-a-server-every-10-seconds%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown