求救websocket问题
发布于 1年前 作者 wbb123yu 1093 次浏览

写了个聊天室可是客户端链接服务器就卡住了 readystate一直是0 连接中状态 这是为什么 难道在connect时候需要别的操作吗 代码如下: 求救

服务端代码 var connections = []; var net = require(‘net’); // 创建一个TCP服务器实例,调用listen函数开始监听指定端口 // 传入net.createServer()的回调函数将作为”connection“事件的处理函数 // 在每一个“connection”事件中,该回调函数接收到的socket对象是唯一的 net.createServer(function(sock) { // 我们获得一个连接 - 该连接自动关联一个socket对象 connections.push(sock); console.log('CONNECTED: ' + sock.remoteAddress + ‘:’ + sock.remotePort); sock.write(‘fdsafdsafsa’); // 为这个socket实例添加一个"data"事件处理函数 sock.on('data’, function(data) { console.log('DATA ' + sock.remoteAddress + ': ' + data); // 回发该数据,客户端将收到来自服务端的数据 // sock.write(‘You said "’ + data + ‘"’); });

// 为这个socket实例添加一个"close"事件处理函数 sock.on('close’, function(data) { console.log('CLOSED: ' + sock.remoteAddress + ' ' + sock.remotePort); }); }).listen(8081); console.log('Server listening on ' + port); 客户端代码 var SocketCreated; var ws;

function createSocket (name) { if (SocketCreated && (ws.readyState == 0 || ws.readyState == 1)) { ws.close(); } Log(“准备连接到聊天服务器 …”); try { ws = new WebSocket('ws://localhost:8081?name=’+name); SocketCreated = true; } catch (ex) { Log(ex, “ERROR”); return; } ws.onopen = WSonOpen; ws.onmessage = WSonMessage; ws.onclose = WSonClose; ws.onerror = WSonError; }

function WSonOpen() { Log("连接已经建立。", “OK”); };

function WSonMessage(event) { Log(event.data); };

function WSonClose() { Log("连接关闭。", “ERROR”); };

function WSonError() { Log("WebSocket错误。", “ERROR”); };

function Log (text,type) { var li = document.createElement(‘li’); switch(type) { case 'OK’: li.setAttribute(‘class’,’ok’); break; case 'ERROR’: li.setAttribute(‘class’,’error’); break; default: break; } var chatDiv = document.getElementById(‘chatDiv’); var ul = chatDiv.getElementsByTagName(‘ul’)[0]; li.innerText = text; ul.appendChild(li); }

13 回复

= =怎么没人

如果你可以用socket.io,可以参考这篇文章 http://blog.fens.me/nodejs-socketio-chat/

= =我知道 可是不用为什么不行呢 暂时不想用模块 不然都懒得想了

0.0为什么没人 大家都是用模块的么

…还是没人 太简单了没人理么

你的服务器用的原生socket,客户端用的websocket,都不是一个东西,协议都不一样怎么能通信呢?到githup上找找node.js的websocket服务器端模块

= =最近忙的都没来看 bae上不支持自定义模块还有socket.io socket.io试过了可行 但是不支持没办法 那些模块是咋写的呢 涉及到node底层的c吗? 我以为模块也是用nodejs写的 所以想问问有没有这种办法来着

@wbb123yu不需要,都是nodejs

@dengqiao那就是说不需要模块也应该可以啊 还是说工程量太大了

模块么? bae上没法装模块啊表示

@wbb123yu可以,要看你有没有这个能力

@dengqiao = =表示果断没有 好多还搞不懂呢

回到顶部