我在使用websockets时遇到一些问题:
java.io.IOException: Broken Pipe我想知道的主要事项:
SpringMVC项目使用websockets; SockJS客户端和org.springframework.web.socket.handler.TextWebSocketHandler服务器端.
A JSON生成服务器端并发送给客户端.有时,我得到了java.io.IOException: Broken Pipe.我google/StackOverflowed很多,发现太多我不理解的东西,但原因可能是连接是关闭客户端而服务器仍然发送消息(例如,心跳).听起来不错吗?这种例外的其他原因是什么?客户端关闭连接的原因是什么(刷新或关闭选项卡除外)?
此外,有时客户端不会从服务器获取任何消息,尽管服务器应该发送它们.我在发送消息之前和之后进行登录,并打印两个日志语句.有谁知道为什么会发生这种情况?我在Chrome的控制台日志中没有错误.刷新页面不起作用,我需要重启spring项目...
如果您需要更多信息,请发表评论.
function connect() {
var socket = new SockJS('/ws/foo');
socket.onopen = function () {
socket.send(fooId); // ask server for Foo with id fooId.
};
socket.onmessage = function (e) {
var foo = JSON.parse(e.data);
// Do something with foo.
};
}
Run Code Online (Sandbox Code Playgroud)
服务器端
服务
@Service
public class FooService implements InitializingBean {
public void …Run Code Online (Sandbox Code Playgroud) 我正在开发一个使用MongoDB的项目,但我从未使用它.我明白通过使用javascript,你可以操纵数据库.我创建了一个删除一些字段并添加其他字段的脚本,但它无法正常工作:
db.floor.find({_id:"003"}).forEach( function(doc) { // Find floor with id = 003.
var tiles = doc.tiles; // Get tiles from floor.
for(var i = 0; i < tiles.length; i++){ // Loop through tiles.
var tile = tiles[i]; // Get tile at index i.
if (tile.nodeType){ // If tile has a field "nodeType",
tile.tileType = tile.nodeType; // add a field "tileType"
delete tile.nodeType; // and delete the "nodeType" field.
}
// THIS CODE BELOW IS NOT WORKING
var sensors = tile.sensors; // …Run Code Online (Sandbox Code Playgroud)