我是大气新手。我正在尝试通过在线教程来实施一个类似于“气氛聊天”的项目。我的编码器类与大气聊天中的编码器类相同,但是我的消息未正确编码。在我的项目中,使用长轮询连接到服务器的浏览器每3秒发送GET请求,服务器通过发送对象响应来响应该请求。此响应链中的第一个响应正在被编码,但是后面的未得到编码,而是将整个对象发送到浏览器。
这是代码段:
编码器类:
import com.fasterxml.jackson.databind.ObjectMapper;
import org.atmosphere.config.managed.Encoder;
import javax.inject.Inject;
import java.io.IOException;
public class OrderJacksonEncoder implements Encoder<Order, String> {
@Inject
private ObjectMapper mapper;
@Override
public String encode(Order order) {
try {
return mapper.writeValueAsString(order);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
获取注释
@Get
public void onGet(AtmosphereResouce r) {
broadcaster.broadcast(new Order(/**some fields/));
}
OnMessage注释
@org.atmosphere.config.service.Message(encoders = {OrderJacksonEncoder.class})
public Order sendOrder(Order order) throws IOException {
return order;
}