我在通过SocketIO从RabbitMQ向用户发送消息时遇到问题.
我有与SocketIO集成的 Flask应用程序.目前的用户流程似乎如此
问题是我无法设置RabbitMQ监听器,它通过SocketIO将消息转发给浏览器.每次我得到不同的错误.主要是连接关闭,或者我在应用程序上下文之外工作.
我尝试了很多方法,这是我的最后一个方法.
# callback
def mq_listen(uid):
rabbit = RabbitMQ()
def cb(ch, method, properties, body, mq=rabbit):
to_return = [0] # mutable
message = Message.load(body)
to_return[0] = message.get_message()
emit('report_part', {"data": to_return[0]})
rabbit.listen('results', callback=cb, id=uid)
# this is the page, which user reach
@blueprint.route('/report_result/<uid>', methods=['GET'])
def report_result(uid):
thread = threading.Thread(target=mq_listen, args=(uid,))
thread.start()
return render_template("property/report_result.html", socket_id=uid)
Run Code Online (Sandbox Code Playgroud)
其中rabbit.listen方法是抽象的:
def listen(self, queue_name, callback=None, id=None):
if callback is not None:
callback_function = callback
else:
callback_function = self.__callback
if id is None:
self.channel.queue_declare(queue=queue_name, durable=True) …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个简单的Android应用程序,我收到此错误:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.twista.shopinglist/com.twista.shopinglist.ItemDetail}: java.lang.UnsupportedOperationException: addView(View, LayoutParams) is not supported in AdapterView
Run Code Online (Sandbox Code Playgroud)
我尝试谷歌它并通过这里的一些答案修复,但不成功它没有解决:(.
我有一个MainActivity跟ListView在onCreate()我打电话
public class MainActivity extends Activity {
....
@Override
protected void onCreate(Bundle savedInstanceState) {
...
final ListView listView = (ListView) findViewById(R.id.overListView);
List<Item> values = dataSource.getItems();
final ArrayAdapter<Item> adapter = new ArrayAdapter<Item>(this,
android.R.layout.simple_list_item_1, values);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Item i = adapter.getItem(position);
Intent intent = new Intent(MainActivity.this, …Run Code Online (Sandbox Code Playgroud)