You probably don't want to use a segue to do what you're trying to do here, because a segue always creates a new view controller. It would be better to push to the messageDetailController in code, so that you can put an if clause in there that only creates and pushes the controller if one doesn't exist. When a second event comes in, you want only to change the value of what you're displaying. The code could be something like this (in main view controller, I guess, if that's what gets the info from the listener).
if (! messageDetailController) {
MessageDetailController *messageDetailController = self.storyboard instantiateViewControllerWithIdentifier:@"MessageController"];
messageDetailController.detailItem = infoFromListener;
[self.navigationController pushViewController:messageDetailController animated:YES];
}else{
messageDetailController.detailItem = infoFromListener;
}