继续跨频道聊天

现在,我们处于应用程序的稳态部分(图4-15),两个对等方只是轮流要求服务器将消息中继到另一方。

图4-15

图4-15 稳定状态下的信令信道使用

邮件交换是通过以下代码在客户端实现的:

  1. ...
  2. // Handle 'response' message
  3. socket.on('response', function (response) {
  4. console.log('Got response from other peer: ' + response);
  5. div.insertAdjacentHTML( 'beforeEnd', '<p>Time: ' + (performance.now() / 1000).toFixed(3) + ' --> Got response from other peer: </p>');
  6. div.insertAdjacentHTML( 'beforeEnd', '<p style="color:blue">' + response + '</p>');
  7. // Keep on chatting
  8. var chatMessage = prompt('Keep on chatting. Write "Bye" to quit conversation', "");
  9. ...
  10. ...
  11. // Keep on going: send response back to remote party (through server)
  12. socket.emit('response', {
  13. channel: channel,
  14. message: chatMessage
  15. });
  16. }
  17. });

基本上,在接收到新消息后,每个对等方都会执行通常的日志记录操作,然后提示用户进行新的输入。 只要插入的文本的值不是 Bye ,它就会向对方发送新消息。 图4-16 显示了在通道中发出新消息之前发起者的窗口。

图4-16

图4-16 继续聊天(发起方)

图4-17 依次显示了接收到这样的消息后的服务器控制台,该消息照常广播到远程方。

图4-17

图4-17 继续聊天(服务器端)

最后,图4-18 显示了接收方接收到的中继消息。

图4-18

图4-18 继续聊天(加入方)