HTML5 Websocket 在发送消息之前等待连接和就绪状态更改

Posted

技术标签:

【中文标题】HTML5 Websocket 在发送消息之前等待连接和就绪状态更改【英文标题】:HTML5 Websocket wait for connection and readystate change before sending message 【发布时间】:2017-05-19 08:00:46 【问题描述】:

我在我的 React 应用程序中使用 Websockets,我必须连接到一个 Web 套接字,然后在连接后立即发送一条消息。但我的代码不同步

在这里

ws = new WebSocket(uri);
ws.send('my msg');

有没有办法等待连接建立和就绪状态改变! 谢谢!

【问题讨论】:

【参考方案1】:

来自the docs on MDN:

// Create WebSocket connection.
const socket = new WebSocket('ws://localhost:8080');

// Connection opened
socket.addEventListener('open', function (event) 
    socket.send('Hello Server!');
);

【讨论】:

【参考方案2】:

我正在执行以下操作来准备我的 WebSocket,以便在许多其他地方使用,不仅仅是在 WebSocket readyState 更改后立即

// https://***.com/questions/951021/what-is-the-javascript-version-of-sleep
const sleep = (ms) => 
  return new Promise(resolve => setTimeout(resolve, ms));
;

// (inside of async function)...

  const ws = new WebSocket(<webSocketServerUri>);

  let timeToConnect = 0;
  while (ws.readyState !== ws.OPEN) 
    await sleep(1);
    ++timeToConnect;
  ;

  console.log('The WebSocket took ' + timeToConnect + ' milliseconds to connect.');

// (inside of async function)...
// ...
// (some other place in the code where 'ws' is accessible)...

  ws.send('my msg');

// (some other place in the code where 'ws' is accessible)...

【讨论】:

以上是关于HTML5 Websocket 在发送消息之前等待连接和就绪状态更改的主要内容,如果未能解决你的问题,请参考以下文章

html5消息推送功能怎么做

websocket常见错误

HTML5 - websocket的应用 之 简易聊天室

websocket---Html5

HTML5的WebSocket是啥原理

HTML5 WebSocket