JavaScript WebSocket OnMessage 事件数据

9
使用JavaScript WebSocket如何将event.dataonMessage函数中传递出来?
var eventData = EventRequest("text");


  ..... codes .....


EventRequest = function (text)
{
   var socket = new WebSocket ('ws://localhost:8080/');
   websocket.onopen = function(evt) { onOpen(evt); };
   websocket.onmessage = function(evt) { onMessage(evt); };

function onOpen (evt)
{
   socket.send("text");
}

function onMessage (evt)
{
   alert (evt.data);
   return evt.data;
}
};

我尝试了不同的方法来传递evt.data,但是都没有成功。我可以看到正确的evt.data数据,但是我无法将数据从onMessage函数中传递出去。

我尝试过:

function wcConnection (){
   this.dataInput = '';
}

onMessage函数内,我添加了以下内容。
function onMessage (evt)
{
   alert (evt.data);
   this.dataInput = evt.data;
}

非常感谢您的帮助。


你能做一个基本的吗?就像这个页面上的 http://www.tutorialspoint.com/html5/html5_websocket.htm? - user1382306
3个回答

8
如果您的服务器是Python Tornado。
def on_message(self, message):
        t = json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])
        self.write_message(t)

在您的客户端中,要检索消息,您可以执行以下操作:
ws.onmessage = function (evt) { 
    console.log(JSON.parse(event.data));
}

您应该在控制台中看到JSON。


2
为什么要将值返回给websocket.onmessage函数?这个函数就是获取该值的函数。如果你想将值传递给另一个函数,只需将事件对象传递到该函数中,并使用“evt.data”访问它。
websocket.onmessage = function(evt) { responseData(evt); };
function responseData(evt) {
    /* Here is your data, Do you what you want! */
    console.log(JSON.parse(evt.data));
}

0

一旦您使用 new 创建了 WebSocket 实例,您将能够获取 OnMessage 消息事件。如果您正在使用 React,则

    useEffect(() => {
    WebSocketScale.onmessage = (event: any) => {
        value.push(JSON.parse(event.data));
}, []);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接