我是网络套接字的新手。我为我的后端使用了tornado/python,并编写了下面的代码。使用Web套接字和龙卷风从后端通知ping
class BaseWebSocketHandler(websocket.WebSocketHandler):
"""Base Class to establish an websocket connection."""
def open(self):
"""Opening the web socket connection."""
self.write_message('Connection Established.')
def on_message(self, message):
"""On message module send the response."""
pass
def on_close(self):
"""Close the connection."""
self.write_message('bye')
class MeterInfo(BaseWebSocketHandler):
"""Establish an websocket connection and send meter readings."""
def on_message(self, message):
"""On message module send to the response."""
self.write_message({'A': get_meter_reading()})
我的JavaScript代码就像下面,
var meter = new WebSocket("ws://"+window.location.host+"/socket/meterstatus/");
meter.onopen = function() {
$('#meter-well').text('Establishing connection...');
};
meter.onmessage = function (evt) {
var data = JSON.parse(evt.data)
var text = "<div class='meter'><h2>" + data.A +"</h2></div>";
$('#meter-pre').html(text);
};
meter.onclose = function (evt) {
console.log(JSON.parse(evt.data))
$('#meter-pre').append('\n'+evt.data);
};
window.setInterval(function(){ meter.send('') }, 100);
我想提出一个空白的网页套接字请求请求到后端,每100毫秒。这对我来说似乎是一个很糟糕的解决方案有没有更好的方法来做到这一点,而不需要向后端发送多个send(),只有在读表中发生任何变化时才通知用户?
此外,我已经通过MQTT协议以更好的方式做到这一点,有人可以建议我如何实现这一点?
目前还不清楚你在这里问了什么,你想用MQTT替换所有的代码吗? – hardillb
@hardillb我想要一个更好的解决方案,以便我不需要每100毫秒就发送一次send()到服务器。 –
那么,你有什么尝试,我们会帮你解决一些不起作用的东西,但不太可能为你写所有的东西? – hardillb