#javascript #reactjs #websocket
Вопрос:
Я работаю с WebSocket в reactjs, но WebSocket.отправка не выполняется при событии onClick. здесь я создаю WebSocket
const ws = new WebSocket("ws://192.168.18.112:8000/ws/notification/");
подключение к WebSocket
ws.onopen = (e) => {
console.log("connect");
};
вот моя функция onClick
const sendNotification = (e) => {
console.log("click");
if (ws.readyState === WebSocket.OPEN amp;amp; message !== "") {
ws.send("message");
console.log("Sending message"); // this console is execute
} else if (ws.readyState === WebSocket.CONNECTING) {
ws.addEventListener("open", () => sendNotification());
console.log("Connecting state");
console.log("Not Send");
} else {
console.log("nothing happen");
}
};
итак, вот моя проблема, я не могу найти ошибку или проблему в своем коде.
Комментарии:
1. Можете ли вы опубликовать вывод консоли?
2. да, сначала подключается ws, а затем в функции все условия вызываются случайным образом, но строка кода « ws.send(«сообщение»)` » пропускается или не выполняется.
3. Измените
console.log(‘click’)
на также войтиwe.readyState
иmessage
. Это может дать вам некоторые подсказки о причине.4. также была распечатана консоль «отправка сообщения»
Ответ №1:
попробуйте этот W3CWebSocket. Также я не думаю, что есть «/» после уведомления после ws/уведомления, дважды проверьте, правильна ли ваша конечная точка или нет.
mport React, { Component } from 'react';
import { w3cwebsocket as W3CWebSocket } from "websocket";
const client = new W3CWebSocket('ws://192.168.18.112:8000/ws/notification/');
class App extends Component {
componentWillMount() {
client.onopen = () => {
console.log('WebSocket Client Connected');
};
client.onmessage = (message) => {
console.log(message);
};
}
render() {
return (
<div>
Practical Intro To WebSockets.
</div>
);
}
}
export default App;
Комментарии:
1. Я тоже пробовал этот подход. но, к сожалению, это тоже не работает