写了个聊天室可是客户端链接服务器就卡住了 readystate一直是0 连接中状态 这是为什么 难道在connect时候需要别的操作吗 代码如下: 求救
服务端代码 <code>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); </code> 客户端代码 <code> 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); } </code>
= =怎么没人
= =我知道 可是不用为什么不行呢 暂时不想用模块 不然都懒得想了
0.0为什么没人 大家都是用模块的么
…还是没人 太简单了没人理么
你的服务器用的原生socket,客户端用的websocket,都不是一个东西,协议都不一样怎么能通信呢?到githup上找找node.js的websocket服务器端模块
= =最近忙的都没来看 bae上不支持自定义模块还有socket.io socket.io试过了可行 但是不支持没办法 那些模块是咋写的呢 涉及到node底层的c吗? 我以为模块也是用nodejs写的 所以想问问有没有这种办法来着
推荐用ws
@wbb123yu不需要,都是nodejs
@dengqiao那就是说不需要模块也应该可以啊 还是说工程量太大了
模块么? bae上没法装模块啊表示
@wbb123yu可以,要看你有没有这个能力
@dengqiao = =表示果断没有 好多还搞不懂呢