我正在阅读如何实现websockets。现在我正在查看fancywebsockets实现,因为它更容易设置。我的问题更多地是为了理解一般的websockets,所以我想对此进行一些分类。
您能控制WS发送的数据(接收数据的I.E客户端)吗?
您如何处理,比方说私人消息场景,您还将消息存储在数据库中。如果您在数据库中存储文本并在屏幕上显示消息,那么WS如何将该更改放在浏览该页面的其他人身上。 (WS是否会收听该PAGE中发生的所有更改?)。一个明显的例子是在Facebook上,浏览同一墙的两个人看到了墙主的更新?
虽然有点无关,但好奇的问题。如果websockets为我们提供数据的实时更新,为什么没有人创建Google Wave服务的fork版本。是因为不是每个浏览器都有明确的实现吗?
感谢。
答案 0 :(得分:0)
关于1.真的我不明白这个问题,Websockets连接与TCP连接相同,你可以在发回之前修改收到的日期。 Bristleback Server中的简单示例(服务器获取已编辑用户状态的预览,然后检查它是否包含非法单词,然后将状态的完整预览发送回用户:
@ActionClass
public class ClientNotificationUpdateAction {
@Action
public UserStatus previewEditedStatus(FacebookUser user, UserStatus status) {
removeBadWords(status);
return status;
}
}
关于2. WebSockets服务器具有关于所有连接用户的信息,因此可以将消息简单地发送给所有连接的用户,或者另外过滤以发送此通知,例如仅向关闭的朋友发送。这里还有一些代码(客户更新他的状态,这个状态会发回给他所有的朋友)。
@ActionClass
public class ClientNotificationUpdateAction {
@ObjectSender
private ConditionObjectSender conditionObjectSender;
@Action
public void updateStatus(FacebookUser user, UserStatus status) throws Exception {
SendCondition sendToFriendsOfUser = new FiendsOfUserCondition(user);
BristleMessage message = ActionMessageFactory
.createMessage("ClientNotificationUpdate", "updateStatus", status);
conditionObjectSender.sendMessage(message, sendToFriendsOfUser);
}
}
关于3.确实并非所有的互联网浏览器都实现了WebSockets协议(特别是在移动设备中)