我只有评论部分,当我向数据库发布一些评论时,signalr正在所有客户端上调用一个方法。
@Override
public void run() {
handler.postDelayed(this, updateTime);
startLocationUpdates();
if (myLocation != null) {
mFirebaseDatabaseHelper.updateUserLocation(myLocation);
}
handler.postDelayed(new Runnable() {
@Override
public void run() {
stopLocationUpdates();
}
}, GET_LOCATION_TIME);
}
private void startLocationUpdates() {
//handle unexpected permission absence
if (mGoogleApiClient.isConnected()) {
if (checkLocationPermission()) {
LocationServices.FusedLocationApi.requestLocationUpdates(
mGoogleApiClient, createLocationRequest(), this);
}
} else {
mGoogleApiClient.connect();
}
}
private LocationRequest createLocationRequest() {
LocationRequest mLocationRequest = new LocationRequest();
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
mLocationRequest.setInterval(1000); //1 secs
mLocationRequest.setFastestInterval(100); //1 secs
mLocationRequest.setSmallestDisplacement(1f); //1 m
return mLocationRequest;
}
private void stopLocationUpdates() {
if (mGoogleApiClient.isConnected()) {
LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, this);
}
}
问题在于,当一个用户只是页面的访问者并且没有登录到系统时,不会调用客户端方法updateBlogComments。
如果有2个登录用户访问同一页面,则会同时调用该方法,并且没有问题。但是当已登录用户发布评论时,未经授权的用户将无法获取新上传的评论应该如此。
我该如何解决这个问题。我希望授权用户和非授权用户看到实时评论上传。
由于
答案 0 :(得分:1)
解决。
我故意为此操作创建了一个单独的集线器,不需要授权,但是我忘了更改hubcontext的名称,所以我没有更改,而是使用了NotificationsHub。
感谢@Stilgar,提醒我问题所在。