Edit in JSFiddle

var shouter = new ko.subscribable();

var viewModel1 = function(){
    
    this.firstName = ko.observable("Wrapcode"); 
    this.messageForVM2 = ko.observable("Hello from first view model");
    this.messageForVM2.subscribe(function(newValue) {
        shouter.notifySubscribers(newValue, "messageToPublish");
    });
    this.message = ko.observable("Hello this is vm1")
};

var viewModel2 = function(vm1){
    this.message = ko.observable("Start typing message in input box above");
    shouter.subscribe(function(newValue) {
        this.message(newValue);
    }, this, "messageToPublish");
};


var masterVM = (function(){
    this.viewModel1 =  new viewModel1(),
    this.viewModel2 = new viewModel2();
})();

ko.applyBindings(masterVM)
<h4>View Model 1 </h4>
<div data-bind="with: viewModel1">
    <p data-bind="text:message">
    </p>
    
    <input data-bind="value: messageForVM2, valueUpdate:'afterkeydown'" />
</div>

<h4>View Model 2</h4>
<div data-bind="with: viewModel2">
    <p data-bind="text:message">
    </p>
</div>