尝试为每个连接到我的网络应用的访问者生成UUID。
由于热重新加载而在开发中,同一浏览器中的多个选项卡将获得不同的UUID onload,因为所有选项卡都会一起刷新。
因为fetch需要一段时间,所以最终localStorage会被在一秒钟内分裂过程中生成的不同UUID覆盖。而且我的socket也被设置为3-4个不同的UUID。
在生产开发中,由于没有热重载,这种情况可能很少,但有没有最佳做法可以避免这种情况?
componentWillMount() {
if (localStorage.getItem('uuid') === null) {
fetch('http://example.com/visitor/', {
method: 'GET',
headers: {
'Content-Type': 'application/json',
Accept: 'application/json',
},
})
.then(response => response.json())
.then(jsondata => {
localStorage.setItem('uuid', jsondata);
this.setState({ socket: openSocket('http://localhost:3005') });
this.state.socket('setname', this.state.userName);
})
.catch(err => console.log(err));
}
}