我正在尝试使用React Native内置的Websocket支持。我有这个代码:
var hostname = "192.168.X.XXX";
var port = "4567";
const webSocket = new WebSocket("ws://" + hostname + ":" + port + "/chat");
我有这个:
componentWillMount: function(){
console.log("MOUNTING CHAT COMPONENT");
webSocket.onopen = function(){
console.log("binding to chat room");
bindToChatRoom();
setTimeout(keepWebSocketOpen, 30000);
ws_connected = true;
};
webSocket.onmessage = function (msg) {
this.handleMsg(msg);
};
webSocket.onclose = function () {
console.log("WebSocket connection closed");
ws_connected = false;
};
webSocket.onerror = function (e){
//add some error handling -> DO THIS
console.log(e.message);
};
},
我正在使用 sparkjava 运行本地服务器,如下所示:
webSocket("/chat", ChatWebSocketHandler.class);
等。我已经测试了服务器,我可以通过笔记本电脑上的网络浏览器和带有 URL 192.168.x.xxx:4567/chat 的手机上连接到它(并发送消息(。但是,当我运行 react 本机应用程序时,我从未看到控制台消息"绑定到聊天室"。我错过了什么吗?为什么这个网络套接字从来不打开?
只是想注意,我也尝试在这里连接:ws://echo.websocket.org
描述如下:http://www.websocket.org/echo.html
这是一个已知的工作网络套接字,所以我知道这纯粹是一个反应原生问题......
原来我有一行代码
const webSocket = new WebSocket("ws://echo.websocket.org");
在错误的地方。如果你把它移到componentWillMount中,它就可以了。