Javascript 在react js中使用WebSocket。在跨域的情况下
我在react Js中使用。要建立WebSocket连接,客户端将发送WebSocket握手请求,服务器将为此返回WebSocket握手响应。React Js使用方法Fetch发送请求。因此会发生跨域错误。 服务器示例代码:Javascript 在react js中使用WebSocket。在跨域的情况下,javascript,node.js,reactjs,websocket,Javascript,Node.js,Reactjs,Websocket,我在react Js中使用。要建立WebSocket连接,客户端将发送WebSocket握手请求,服务器将为此返回WebSocket握手响应。React Js使用方法Fetch发送请求。因此会发生跨域错误。 服务器示例代码: const WebSocket = require('ws'); const wss = new WebSocket.Server({ port: 10000 }); let num = 1; wss.on('connection', function connec
const WebSocket = require('ws');
const wss = new WebSocket.Server({
port: 10000
});
let num = 1;
wss.on('connection', function connection(ws) {
ws.on('message', function incoming(message) {
console.log('received: %s', message);
});
setInterval(function () {
console.log(num);
ws.send(num);
num = num + 1;
}, 500);
});
客户端示例代码:
type State = {
data: string
};
class App extends Component {
state: State;
componentDidMount() {
console.log('开始建立Web Socket');
const webSocket = new WebSocket('wss://localhost:10000');
webSocket.addEventListener('open', function (event) {
console.log('建立连接');
});
webSocket.addEventListener('message', function (event) {
console.log('Message from server ', event.data);
});
}
render() {
return (
<div className="App">
<div className="App-header">
<img src={logo} className="App-logo" alt="logo"/>
<h2>Welcome to React</h2>
</div>
<p className="App-intro">
To get started, edit <code>src/App.js</code> and save to reload.
</p>
</div>
);
}
}
export default App;
那么,如何解决Web套接字建立过程中的跨域问题呢??
ws
的CORS?您能显示您的确切错误吗?这是服务器端问题,您需要在服务器上允许CORS。当我使用“”ws://echo.websocket.org时/“作为web套接字服务器,我得到了如下错误,localhost/:1 Fetch API无法加载。请求的资源上不存在“Access Control Allow Origin”标头。因此,不允许访问源“”。响应的HTTP状态代码为404。如果不透明响应满足您的需要,请将请求的模式设置为“no cors”,以获取禁用cors的资源。但我在chrome控制台中尝试了它们,它们都成功地执行了/“作为web套接字服务器,我遇到了跨域问题。但我在chrome控制台上试过,它们都成功执行了。真的吗??ws
的CORS?您能显示您的确切错误吗?这是服务器端问题,您需要在服务器上允许CORS。当我使用“”ws://echo.websocket.org时/“作为web套接字服务器,我得到了如下错误,localhost/:1 Fetch API无法加载。请求的资源上不存在“Access Control Allow Origin”标头。因此,不允许访问源“”。响应的HTTP状态代码为404。如果不透明响应满足您的需要,请将请求的模式设置为“no cors”,以获取禁用cors的资源。但我在chrome控制台中尝试了它们,它们都成功执行。当我使用“ws://echo.websocket.org/”作为web套接字服务器时,我遇到了跨域问题。但我在chrome控制台中尝试了它们,它们都成功执行。