是否可以通过 actioncable 发送文件?如果可以,怎么做?
Is it possible to send file through actioncable ? If possible, how?
我已经使用 actioncable 实现了聊天功能,但不知道如何通过它发送文件,甚至不知道是否可以。
我正在尝试制作聊天应用程序,用户可以在聊天室中上传文件,其他用户可以立即看到,而无需像 actioncable 提供的那样重新加载页面。
可以使用 websockets 上传文件。 (File upload using java websocket API and Javascript)
但目前无法通过 ActionCable。由于 ActionCable 将 Websocket 包装在 Javascript 这也将是 "hacky" 来修补它,所以我会等待新版本并在 rails 回购上写一个问题。
因此对于您的聊天应用程序,您仍然需要使用普通表单提交来上传文件。如果您希望它异步发生,您可以使用我的 "patched" 版本的 jquery-ujs,它允许使用 "data-remote=true" 标志发送文件。
参见 https://github.com/Elektron1c97/jquery-ujs-files
可以通过一些 js 在客户端将文件转换为 base64 数据 url,然后通过 actioncable 将此 url 发送到服务器,服务器将仅广播 base64 数据 url.
我已经用图片、音频和视频文件进行了测试。不适用于 pdf 或 txt,但它应该可以工作。对于像视频这样的大文件,它不稳定。
这只是实验性的。
瞧。
我已经使用 actioncable 实现了聊天功能,但不知道如何通过它发送文件,甚至不知道是否可以。
我正在尝试制作聊天应用程序,用户可以在聊天室中上传文件,其他用户可以立即看到,而无需像 actioncable 提供的那样重新加载页面。
可以使用 websockets 上传文件。 (File upload using java websocket API and Javascript)
但目前无法通过 ActionCable。由于 ActionCable 将 Websocket 包装在 Javascript 这也将是 "hacky" 来修补它,所以我会等待新版本并在 rails 回购上写一个问题。
因此对于您的聊天应用程序,您仍然需要使用普通表单提交来上传文件。如果您希望它异步发生,您可以使用我的 "patched" 版本的 jquery-ujs,它允许使用 "data-remote=true" 标志发送文件。 参见 https://github.com/Elektron1c97/jquery-ujs-files
可以通过一些 js 在客户端将文件转换为 base64 数据 url,然后通过 actioncable 将此 url 发送到服务器,服务器将仅广播 base64 数据 url.
我已经用图片、音频和视频文件进行了测试。不适用于 pdf 或 txt,但它应该可以工作。对于像视频这样的大文件,它不稳定。
这只是实验性的。
瞧。