html5的websocket怎么建立udp连接

html-css08

html5的websocket怎么建立udp连接,第1张

目前还是不支持udp。想用udp,可以使用flash.

UDP目前还未正式发布。

一个UDP的例子:

// This example shows a simple implementation of UPnP-SSDP M-SEARCH discovery using a multicast UDPSocket

var address = '239.255.255.250',

port = '1900',

serviceType = 'upnp:rootdevice',

rn = 'rn',

search = ''

// Create a new UDP client socket

var mySocket = new UDPSocket()

// Build an SSDP M-SEARCH multicast message

search += 'M-SEARCH * HTTP/1.1' + rn

search += 'ST: ' + serviceType + rn

search += 'MAN: "ssdp:discover"' + rn

search += 'HOST: ' + address + ':' + port + rn

search += 'MX: 10'

// Receive and log SSDP M-SEARCH response messages

function receiveMSearchResponses() { // While data in buffer, read and log UDP message

while (mySocket.readable.state === "readable") {

var msg = mySocket.readable.read()

console.log ('Remote address: ' + msg.remoteAddress +

' Remote port: ' + msg.remotePort +

'Message: ' + ab2str(msg.data))

// ArrayBuffer to string conversion could also be done by piping

// through a transform stream. To be updated when the Streams API

// specification has been stabilized on this point.

}

// Wait for SSDP M-SEARCH responses to arrive

mySocket.readable.wait().then(

receiveMSearchResponses,

e =>console.error("Receiving error: ", e)

)

}

// Join SSDP multicast group

mySocket.joinMulticast(address)

// Send SSDP M-SEARCH multicast message

mySocket.writeable.write(

{data : str2ab(search),

remoteAddress : address,

remotePort : port

}).then(

() =>{

// Data sent sucessfully, wait for response

console.log('M-SEARCH Sent')

receiveMSearchResponses()

},

e =>console.error("Sending error: ", e)

)

// Log result of UDP socket setup.

mySocket.opened.then(

() =>{

console.log("UDP socket created sucessfully")

},

e =>console.error("UDP socket setup failed due to error: ", e)

)

// Handle UDP socket closed, either as a result of the application

// calling mySocket.close() or an error causing the socket to be

closed.

mySocket.closed.then(

() =>{

console.log("Socket has been cleanly closed")

},

e =>console.error("Socket closed due to error: ", e)

)

相比UDP,TCP的示例代码显得简单一些

//

// This example shows a simple TCP echo client.

// The client will send "Hello World" to the server on port **9 and log

// what has been received from the server.

//

// Create a new TCP client socket and connect to remote host

var mySocket = new TCPSocket("127.0.0.1", **9)

// Send data to server

mySocket.writeable.write("Hello World").then(

() =>{

// Data sent sucessfully, wait for response

console.log("Data has been sent to server")

mySocket.readable.wait().then(

() =>{

// Data in buffer, read it

console.log("Data received from server:" + mySocket.readable.read())

// Close the TCP connection

mySocket.close()

},

e =>console.error("Receiving error: ", e)

)

},

e =>console.error("Sending error: ", e)

)

// Signal that we won't be writing any more and can close the write half of the connection.

mySocket.halfClose()

// Log result of TCP connection attempt.

mySocket.opened.then(

() =>{

console.log("TCP connection established sucessfully")

},

e =>console.error("TCP connection setup failed due to error: ", e)

)

// Handle TCP connection closed, either as a result of the application

// calling mySocket.close() or the other side closed the TCP

// connection or an error causing the TCP connection to be closed.

mySocket.closed.then(

() =>{

console.log("TCP socket has been cleanly closed")

},

e =>console.error("TCP socket closed due to error: ", e)

)

HTML5好

优点

网络标准

HTML5本身是由W3C推荐出来的,它的开发是通过谷歌、苹果,诺基亚、中国移动等几百家公司一起酝酿的技术,这个技术最大的好处在于它是一个公开的技术。换句话说,每一个公开的标准都可以根据W3C的资料库找寻根源。另一方面,W3C通过的HTML5标准也就意味着每一个浏览器或每一个平台都会去实现。

多设备跨平台

用HTML5的优点主要在于,这个技术可以进行跨平台的使用。比如你开发了一款HTML5的游戏,你可以很轻易地移植到UC的开放平台、Opera的游戏中心、Facebook应用平台,甚至可以通过封装的技术发放到App Store或Google Play上,所以它的跨平台性非常强大,这也是大多数人对HTML5有兴趣的主要原因。

自适应网页设计

很早就有人设想,能不能“一次设计,普遍适用”,让同一张网页自动适应不同大小的屏幕,根据屏幕宽度,自动调整布局(layout)。